前言
话说昨天是周日,程序猿跟产品经理一起看电视。每个节目看到一半程序猿就换台,看到一半就换台,几次之后产品经理终于忍无可忍的咆哮:老子刚看出点意思你就换、刚看出点意思你就换,到底还让不让人看啦?!程序猿淡定的盯着电视道:你半路改需求的时候我可没吱过声!
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是最快的,如果不要求顺序优先选择.