美文网首页
IOS 数组去重处理

IOS 数组去重处理

作者: 花开花非花 | 来源:发表于2017-07-11 15:46 被阅读0次

    在工作工程中我们不必要会遇到,在数组中有重复数据的时候,如何去除重复的数据呢?

    第一种:利用NSDictionary的AllKeys(AllValues)方法

    代码:

    NSArray*dataArray = @[@"2014-04-01",@"2014-04-02",@"2014-04-03",@"2014-04-01",@"2014-04-02",@"2014-04-03",@"2014-04-01",@"2014-04-03",@"2014-04-03",@"2014-04-01",@"2014-04-02",@"2014-04-03",@"2014-04-01",@"2014-04-02",@"2014-04-03",@"2014-04-01",@"2014-04-02",@"2014-04-03",@"2014-04-04",@"2014-04-06",@"2014-04-08",@"2014-04-05",@"2014-04-07",@"2014-04-09",];

    NSMutableDictionary*dic = [[NSMutableDictionaryalloc]initWithCapacity:0];

    for(NSString*str in dataArray)

    {

    [dicsetValue:strforKey:str];

    }

    NSLog(@"%@",[dicallKeys]);

    打印结果:

    (

    "2014-04-09",

    "2014-04-02",

    "2014-04-08",

    "2014-04-01",

    "2014-04-07",

    "2014-04-06",

    "2014-04-05",

    "2014-04-04",

    "2014-04-03"

    )

    第二种方法:利用NSSet的AllObjects方法

    实例代码:

    [objc]view plaincopy

    NSArray*dataArray = @[@"2014-04-01",@"2014-04-02",@"2014-04-03",

    @"2014-04-01",@"2014-04-02",@"2014-04-03",

    @"2014-04-01",@"2014-04-03",@"2014-04-03",

    @"2014-04-01",@"2014-04-02",@"2014-04-03",

    @"2014-04-01",@"2014-04-02",@"2014-04-03",

    @"2014-04-01",@"2014-04-02",@"2014-04-03",

    @"2014-04-04",@"2014-04-06",@"2014-04-08",

    @"2014-04-05",@"2014-04-07",@"2014-04-09",];

    NSSet*set = [NSSetsetWithArray:dataArray];

    NSLog(@"%@",[setallObjects]);

    打印结果:

    (

    "2014-04-01",

    "2014-04-02",

    "2014-04-03",

    "2014-04-04",

    "2014-04-06",

    "2014-04-08",

    "2014-04-05",

    "2014-04-07",

    "2014-04-09"

    )

    第三种方法,利用数组的containsObject来去除

    代码如下:

    [objc]view plaincopy

    NSArray*dataArray = @[@"2014-04-01",@"2014-04-02",@"2014-04-03",

    @"2014-04-01",@"2014-04-02",@"2014-04-03",

    @"2014-04-01",@"2014-04-03",@"2014-04-03",

    @"2014-04-01",@"2014-04-02",@"2014-04-03",

    @"2014-04-01",@"2014-04-02",@"2014-04-03",

    @"2014-04-01",@"2014-04-02",@"2014-04-03",

    @"2014-04-04",@"2014-04-06",@"2014-04-08",

    @"2014-04-05",@"2014-04-07",@"2014-04-09",];

    NSMutableArray*listAry = [[NSMutableArrayalloc]init];

    for(NSString*str in dataArray) {

    if(![listArycontainsObject:str]) {

    [listAryaddObject:str];

    }

    }

    NSLog(@"%@",listAry);

    打印结果:

    (

    "2014-04-01",

    "2014-04-02",

    "2014-04-03",

    "2014-04-04",

    "2014-04-06",

    "2014-04-08",

    "2014-04-05",

    "2014-04-07",

    "2014-04-09"

    )

    第四种方法:利用keyValue的方式(自己不是太明白)

    [objc]view plaincopy

    NSArray*dataArray = @[@"2014-04-01",@"2014-04-02",@"2014-04-03",

    @"2014-04-01",@"2014-04-02",@"2014-04-03",

    @"2014-04-01",@"2014-04-03",@"2014-04-03",

    @"2014-04-01",@"2014-04-02",@"2014-04-03",

    @"2014-04-01",@"2014-04-02",@"2014-04-03",

    @"2014-04-01",@"2014-04-02",@"2014-04-03",

    @"2014-04-04",@"2014-04-06",@"2014-04-08",

    @"2014-04-05",@"2014-04-07",@"2014-04-09",];

    dataArray = [dataArrayvalueForKeyPath:@"@distinctUnionOfObjects.self"];

    NSLog(@"%@",dataArray);

    打印结果如下:

    [objc]view plaincopy

    (

    "2014-04-01",

    "2014-04-02",

    "2014-04-03",

    "2014-04-04",

    "2014-04-06",

    "2014-04-08",

    "2014-04-05",

    "2014-04-07",

    "2014-04-09"

    )

    总结:这几种方式都可以实现去除重复的数据,当然也可以用for循环的方式去除方法不再叙述;淡然也参考了别人的东西进行的总结

    案例的使用:

    服务器返回一个带有日期的数组,当然有重复的日期,同一个的日期的列表要在同一个地方的话,头部显示日期的话,可以使用到此方法去除重复的,当然,根据具体的情况代码和逻辑是不同的!

    相关文章

      网友评论

          本文标题:IOS 数组去重处理

          本文链接:https://www.haomeiwen.com/subject/ezrmhxtx.html