zoukankan      html  css  js  c++  java
  • 去除重复的数据

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

    第一种:利用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循环的方式去除方法不再叙述;淡然也参考了别人的东西进行的总结

    案例的使用:

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

  • 相关阅读:
    (转)如何用PHP/MySQL为 iOS App 写一个简单的web服务器(译) PART1
    Git 常用命令(转)
    (转)iphone常用控件之UIScrollView 不错收藏记录一下
    (转) copy, retain, assign , readonly , readwrite,strong,weak,nonatomic整理
    设计一个移动应用的本地缓存机制(转)
    让表格对角线上的表格变色
    DevExpress XtraReports 入门一 创建 Hello World 报表
    DevExpress XtraReports 入门三 创建 MasterDetail(主/从) 报表
    DevExpress XtraReports 入门二 创建 dataaware(数据感知) 报表
    自己搜集的一些资料(只是一些链接而已)
  • 原文地址:https://www.cnblogs.com/MyBlogZH/p/5586505.html
Copyright © 2011-2022 走看看