這幾天正在整理面試題,順便把以前學的東西給總結一下,數組去重,我猜面試應該考的幾率還是蠻高的,所以下面就讓博主給講講iOS數組去重的幾種方法。
- 第一種:冒泡排序,然后挨個挨個比較,這個沒什么可說的,關鍵是麻煩,而且時間復雜度也挺大的,所以博主就不給講了。
- 第二種:利用數組排序。
-
NSArray *array = @[@"小玉",@"小小魚",@"小玉"]; //數組去重方法---方法1 //建立一個新的的可變數組,數組長度為0 NSMutableArray *newArray = [NSMutableArray array]; //遍歷array,然后判斷新數組中是否包含該元素,如果沒有,則添加。 for (NSString *string in array) { if (![newArray containsObject:string]) { [newArray addObject:string]; } } //輸出新數組中的元素 for (NSString *string in newArray) { NSLog(@"%@",string); }
- 第三種:字典排序
-
NSArray *array = @[@"小玉",@"小小魚",@"小玉"];
//字符串去重方法二 NSMutableDictionary *dict = [NSMutableDictionary dictionary]; //根據字典的key值是唯一的,來寫入數組 for (NSNumber *number in array) { //把number拼接成字符串 [dict setValue:number forKey:[NSString stringWithFormat:@"%@",number]]; } NSLog(@"%@",[dict allValues]);
- 第四種:NSSet排序-根據NSSet是無序的,他可以保證數據的唯一性,插入相同的數據不會有什么效果,博主建議大家面試可以用NSSet,方便快捷,不會偷懶的程序員不是好程序員。。
NSArray *array = @[@"小玉",@"小小魚",@"小玉"]; //第三種去重方法NSSet NSSet *set = [[NSSet alloc]initWithArray:array]; NSLog(@"%@",[set allObjects]);
- NSOrderedSet -- 有序排列--面試要是要求有序排列就用這個,沒要求就用上面那個NSSet
NSArray *array = @[@"小玉",@"小小魚",@"小玉"]; //數組有序排列 NSOrderedSet *orderSet = [NSOrderedSet orderedSetWithArray:array]; NSLog(@"%@",orderSet.array);