1. 程式人生 > >iOS 去除陣列中重複資料的幾種方法

iOS 去除陣列中重複資料的幾種方法

第一種:利用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);

列印結果如下:

  1. (

  2. "2014-04-01",

  3. "2014-04-02",

  4. "2014-04-03",

  5. "2014-04-04",

  6. "2014-04-06",

  7. "2014-04-08",

  8. "2014-04-05",

  9. "2014-04-07",

  10. "2014-04-09"

  11. )

總結:這幾種方式都可以實現去除重複的資料,當然也可以用for迴圈的方式去除方法不再敘述;也參考了別人的東西進行的總結