IOS 数组去重方法

1.使用字典key的唯一方法去重;如果key值相同,则不会再往字典中添加数据。

代码实现

NSArray *checkArray =@[@(111), @(222),@(555), @(222),@(111)];    
    // 声明一个可变字典,用key的唯一性
    NSMutableDictionary *dic = [[NSMutableDictionaryalloc]initWithCapacity:0];
    for(NSString *strin checkArray)
    {
        [dic setValue:strforKey:str];
    }
    NSLog(@"%@",[dicallKeys]);

打印结果
2017-03-27 20:54:28.049 数组去重[3809:230991] (
111,
222,
555
)

2使用集合NSSet的初始化方法,简单暴力。

  • NSset 得出结果是无续的
NSArray *checkArray =@[@(111), @(222),@(555), @(222),@(111)];
    // 直接调用集合是类初始化方法。
    NSSet *set = [NSSetsetWithArray:checkArray];
    NSLog(@"%@",[setallObjects]);

打印结果
2017-03-27 21:03:54.071 数组去重[3874:236584] (
111,
555,
222
)

  • 想要得出结果是有序的
NSArray *checkArray =@[@(111), @(222),@(555), @(222),@(111)]; 
NSOrderedSet *set = [NSOrderedSetorderedSetWithArray:checkArray]; 
NSLog(@”%@”, set.array);

打印结果:
2017-03-27 21:12:58.619 数组去重[3936:242301] (
111,
222,
555
)

3.类似冒泡法的实现原理,逻辑简单,顺序不会变化

 NSArray *checkArray =@[@(111), @(222),@(555), @(222),@(111)];
    NSMutableArray *containArray = [[NSMutableArrayalloc] init];
    for (unsigned i =0; i < [checkArray count]; i++){
        if ([containArraycontainsObject:[checkArrayobjectAtIndex:i]] == NO){
            [containArray addObject:[checkArrayobjectAtIndex:i]];
        }
    }
    NSLog(@"%@",containArray);

打印结果
2017-03-27 21:06:57.416 数组去重[3897:238906] (
111,
222,
555
)

4.使用valueForKeyPath:

NSArray *checkArray =@[@(111), @(222),@(555), @(222),@(111)];
    checkArray = [checkArray valueForKeyPath:@"@distinctUnionOfObjects.self"];
    NSLog(@"%@",checkArray);

打印结果:
2017-03-27 21:16:18.912 数组去重[3967:244528] (
111,
555,
222
)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 项目中由于某些需求有时需要将NSArray中去除重复的元素,而存在NSArray中的元素不一定都是NSString...
    Easy_VO阅读 8,823评论 2 5
  • 曾经有一份美好的爱情放在我的面前我没有珍惜。等到失去后才后悔莫及。如果可以再对小李说。毛欣想说。这辈子无缘再牵手。...
    毛欣与小李阅读 7,611评论 0 13
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 11,728评论 0 17
  • 在阅读之前清除自己的负面情绪,如果无法清除,请想象:我阅读的目的是什么?阅读给我带来了什么好处? ①先用高速阅读法...
    Noble2015阅读 2,720评论 0 0
  • 定义: JavaScript函数是指一个特定的代码块,可能包含多条语句,可以通过名字来供其他语句调用以执行函数包含...
    饥人谷_sunny阅读 2,498评论 0 0