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
)