关于iOS去除数组中重复数据的几种方法

原创 2015年11月19日 14:29:05
在工作工程中我们不必要会遇到,在数组中有重复数据的时候,如何去除重复的数据呢?

第一种:利用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 = [[NSMutableDictionary alloc]initWithCapacity:0];
    for(NSString *str in dataArray)
    {
        [dic setValue:str forKey:str];
    }
    NSLog(@"%@",[dic allKeys]);

打印结果:

(
    "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方法

实例代码:

 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 = [NSSet setWithArray:dataArray];
    NSLog(@"%@",[set allObjects]);
打印结果:

(
    "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来去除

代码如下:

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 = [[NSMutableArray alloc]init];
    for (NSString *str in dataArray) {
        if (![listAry containsObject:str]) {
            [listAry addObject: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的方式(自己不是太明白)

    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 = [dataArray valueForKeyPath:@"@distinctUnionOfObjects.self"];
    NSLog(@"%@",dataArray);

打印结果如下:

 (
    "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 数组的去重(普通的无序的去重和排序好的去重)

有时需要将NSArray中去除重复的元素,而存在NSArray中的元素不一定都是NSString类型。今天想了想,加上朋友的帮助,想到两种解决办法,先分述如下。 1.利用NSDictionary...

iOS 数组集合操作(交集,并集,差集,子集)

iOS 数组集合操作(交集,并集,差集,子集) 求数组的 交集,并集,差集 NSArray *array1 = @[@"1",@"2",@"3"]; NSArray *array2 = @...

swift 去除数组里面重复的属性

var array:[String] = [] let result = Array(Set(array))
  • wmmhwj
  • wmmhwj
  • 2016-09-27 11:17
  • 1902

Swift编程基础之数组去重 + 模拟双色球

这一篇本来就是想跟大家分享下我做的第一个小玩意–模拟双色球,但是期间会需要用到数组去重,所以我就封装了一个函数,这个去重的思路是我独立想出来的,比较简洁高效,我很引以为豪,特地分享给大家。一、数组去重...

关于NSArray中去重的问题解决

关于数组去重问题的解决 最近在作项目的时候发现需要将数组里面的重复元素删除,刚开始用forin遍历所有元素,然后用isEquelToString来判断是否重复,然后用一个新数组接收。...

iOS NSArray 求两个数组的交集 两个数组去重

http://blog.csdn.net/watsy/article/details/17754467 很久没写ios代码。最近和朋友聊天时候有强迫症,想强烈把代码给优化。 问题是...

iOS数组去除重复的元素的4种方法

方法一、使用NSMutableDictionary的allKeys方法 NSMutableDictionary *dic = [[NSMutableDictionary alloc]initW...

多种方法对iOS数组中的元素去重复

例如:   1 2 3   NSArray *array = @[@"12-11", @"12-11", @"12-...

插入MySQL数据库前去除重复数据的几种方法

若数据不存在插入,存在更新 使用duplicate key关键字,如插入数据时发生主键冲突就更新数据 使用Ingore关键字 使用replace into关键字 一、若数据不存在插入,存在更新: ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)