去除重复的数据

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

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

代码:

  1. NSArray *dataArray = @[@"2014-04-01",@"2014-04-02",@"2014-04-03",
  2. @"2014-04-01",@"2014-04-02",@"2014-04-03",
  3. @"2014-04-01",@"2014-04-03",@"2014-04-03",
  4. @"2014-04-01",@"2014-04-02",@"2014-04-03",
  5. @"2014-04-01",@"2014-04-02",@"2014-04-03",
  6. @"2014-04-01",@"2014-04-02",@"2014-04-03",
  7. @"2014-04-04",@"2014-04-06",@"2014-04-08",
  8. @"2014-04-05",@"2014-04-07",@"2014-04-09",];
  9. NSMutableDictionary *dic = [[NSMutableDictionary alloc]initWithCapacity:0];
  10. for(NSString *str in dataArray)
  11. {
  12. [dic setValue:str forKey:str];
  13. }
  14. 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方法

实例代码:

  1. NSArray *dataArray = @[@"2014-04-01",@"2014-04-02",@"2014-04-03",
  2. @"2014-04-01",@"2014-04-02",@"2014-04-03",
  3. @"2014-04-01",@"2014-04-03",@"2014-04-03",
  4. @"2014-04-01",@"2014-04-02",@"2014-04-03",
  5. @"2014-04-01",@"2014-04-02",@"2014-04-03",
  6. @"2014-04-01",@"2014-04-02",@"2014-04-03",
  7. @"2014-04-04",@"2014-04-06",@"2014-04-08",
  8. @"2014-04-05",@"2014-04-07",@"2014-04-09",];
  9. NSSet *set = [NSSet setWithArray:dataArray];
  10. 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来去除

代码如下:

  1. NSArray *dataArray = @[@"2014-04-01",@"2014-04-02",@"2014-04-03",
  2. @"2014-04-01",@"2014-04-02",@"2014-04-03",
  3. @"2014-04-01",@"2014-04-03",@"2014-04-03",
  4. @"2014-04-01",@"2014-04-02",@"2014-04-03",
  5. @"2014-04-01",@"2014-04-02",@"2014-04-03",
  6. @"2014-04-01",@"2014-04-02",@"2014-04-03",
  7. @"2014-04-04",@"2014-04-06",@"2014-04-08",
  8. @"2014-04-05",@"2014-04-07",@"2014-04-09",];
  9. NSMutableArray *listAry = [[NSMutableArray alloc]init];
  10. for (NSString *str in dataArray) {
  11. if (![listAry containsObject:str]) {
  12. [listAry addObject:str];
  13. }
  14. }
  15. 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的方式(自己不是太明白)

  1. NSArray *dataArray = @[@"2014-04-01",@"2014-04-02",@"2014-04-03",
  2. @"2014-04-01",@"2014-04-02",@"2014-04-03",
  3. @"2014-04-01",@"2014-04-03",@"2014-04-03",
  4. @"2014-04-01",@"2014-04-02",@"2014-04-03",
  5. @"2014-04-01",@"2014-04-02",@"2014-04-03",
  6. @"2014-04-01",@"2014-04-02",@"2014-04-03",
  7. @"2014-04-04",@"2014-04-06",@"2014-04-08",
  8. @"2014-04-05",@"2014-04-07",@"2014-04-09",];
  9. dataArray = [dataArray valueForKeyPath:@"@distinctUnionOfObjects.self"];
  10. 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循环的方式去除方法不再叙述;淡然也参考了别人的东西进行的总结

案例的使用:

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

时间: 2024-12-18 11:30:54

去除重复的数据的相关文章

mongodb去除重复的数据(二)

前天因为工作需要,开始着手对数据库中两千多万的数据中其中一个字段重复的数据进行去重. 原本使用一些测试的数据测试后,前天写的那个方法是可行的,但是当面对这个两千万的真实数据时,我却发现这方法有些不顶用了,最终只好又经过若干次的尝试,总算成功去重. 最终总结一下整个过程: 1.这个方法就是上一篇所讲的,利用mongodb的游标dbcursor和while循环的方式. var res=db.test.find(); while(res.hasNext()){ var res1=db.test.fin

mongodb去除重复的数据

今天出现了一个新的需求,有个部门需要拿到mongodb中的数据,要求去掉其中一个字段内容相同的数据. 虽然mongodb中有distinct来去重,但是和mysql的distinct不同的是,mysql中能用distinct * 返回整条记录的信息,而mongodb的distinct我却只是返回去重的那个字段的数据(或许mongodb也可以返回整条,但是我不知道). mysql中的distinct返回完整记录: mongodb中distinct去重某个字段: 上边的内容并不是我想看到的结果,因此

Mongodb去除重复的数据,pymongo去重

接上一篇的,发现爬斗鱼主播信息存入Mongodb数据库后,发现很多重复的数据,毕竟斗鱼不可能有这么多的主播,所以很多页是有重复的主播房间的. 查了一下怎么去重,发现比较麻烦,与其存入重复的数据后面再去重,还不如在存入数据库的时候就检查,不去存入重复的数据,这样就避免了后期再去做去重工作.于是改动如下: #-*- coding:utf-8 -*- #_author:John #date:2018/10/25 0:07 #softwave: PyCharm import requests impor

java 数组如何去除重复的数据?

java数组去重example: String[] str={"john","lily","lily","lucy"}; List<String> list=new ArrayList<String>(); for(int i=0;i<str.length;i++){ if(!list.contains(str[i])){ list.add(str[i]); } }

查询重复的数据

我们先准备一张表,结果如图: 现在我们查询一下重复的数据,那就是张三了,我们应该怎么写呢?应该这样写 select * from usertb where name in (select name from usertb group by name having count (name) > 1) 输出结果:.如图: 大家有木有发现,我明明有这些字段和表,为什么还显示无效就是红色的波浪线呢,原因是 原因是SQL Server的intellisense(智能感知功能)需要重新整理一下,用快捷键Ct

mysql 去除重复数据 语句

纠结的过程: mysql> select * from role group by role_name,deleted; +---------+-----------+---------+ | role_id | role_name | deleted | +---------+-----------+---------+ | 2 | xue | 12 | | 1 | zhao | 12 | | 3 | zhao | 13 | +---------+-----------+---------+

JAVA数组去除重复数据

一.用List集合实现   int[] str = {5, 6, 6, 6, 8, 8, 7,4}; List<Integer> list = new ArrayList<Integer>(); for (int i=0; i<str.length; i++) { if(!list.contains(str[i])) { list.add(str[i]); } } System.out.println("去除重复后的list集合"+list); 输出结果是

按天去除重复数据,为0则取0,否则取最大的那个值

测试数据: mysql> select * from t2; +----+--------+---------------------+------------+ | id | userid | inputDate | infoStatus | +----+--------+---------------------+------------+ | 1 | 1 | 2014-07-11 00:00:00 | 20013 | | 2 | 1 | 2014-07-11 00:00:00 | 0 |

List集合去除重复数据

[转自]Java中List集合去除重复数据的方法 1. 循环list中的所有元素然后删除重复 public static List removeDuplicate(List list) { for ( int i = 0 ; i < list.size() - 1 ; i ++ ) { for ( int j = list.size() - 1 ; j > i; j -- ) { if (list.get(j).equals(list.get(i))) { list.remove(j); }