Objective-C之数组去重

前言

话说昨天是周日,程序猿跟产品经理一起看电视。每个节目看到一半程序猿就换台,看到一半就换台,几次之后产品经理终于忍无可忍的咆哮:老子刚看出点意思你就换、刚看出点意思你就换,到底还让不让人看啦?!程序猿淡定的盯着电视道:你半路改需求的时候我可没吱过声!

也许,永远不懂.jpeg
NSArray <NSString*>* originalArray; //待去重数组

第一种:利用NSDictionary的key的唯一性

NSMutableDictionary *dict = [[NSMutableDictionary dictionary];  
  for(NSString *original in dataArray)  
    {  
        [dict setValue:original forKey:original];  
    }  
 NSArray * noRepeatArray =  [dict allKeys];  

这种去重方式得到的数组是一个乱序数组,因为字典本身无序.

第二种方法:利用NSSet去重

NSSet *set = [NSSet setWithArray:originalArray];  
NSArray * noRepeatArray = [set allObjects];

这种方法也会得到一个无序数组,集合本无序

第三种方法:利用NSArray的containsObject 来去重

 NSMutableArray *noRepeatArray = [[NSMutableArray alloc]init];  
  for (NSString *original in originalArray) {  
        if (![noRepeatArray containsObject:original]) {  
            [noRepeatArray addObject:str];  
        }  
    }  
得到一个有序数组

第四种方法:利用KVC的方式

NSArray * noRepeatArray = = [originalArray valueForKeyPath:@"@distinctUnionOfObjects.self"];  
得到一个有序数组

个人观点,NSSet是最快的,如果不要求顺序优先选择.

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

推荐阅读更多精彩内容