數組去重方法總結


這幾天正在整理面試題,順便把以前學的東西給總結一下,數組去重,我猜面試應該考的幾率還是蠻高的,所以下面就讓博主給講講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);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM