數組去重方法總結

這幾天正在整理面試題,順便把之前學的東西給總結一下,數組去重,我猜面試應該考的概率仍是蠻高的,因此下面就讓博主給講講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);
相關文章
相關標籤/搜索