iOS 基礎之NSArray數組去重


1、面試題 

現在有一個數組arr1,它里面存儲的字符串分別為@“zhangsan”@“lisi”@“wangwu”@“lisi”@“zhangsan”,請將它去重后賦值給可變數組arr2輸出為:@“zhangsna”,@“lisi”,@“wangwu”。

解題思路:

1)創建一個可變字典

2)遍歷這個數組將數組的字符串存儲為這個字典的key和value

3)調用字典的一下任意一個方法

@property (readonly, copy) NSArray<KeyType> *allKeys;

@property (readonly, copy) NSArray<ObjectType> *allValues;

 4)將獲得的字符串存儲在arr2中即可。

代碼如下:

 1 NSArray *arr1 = @[@"zhangsan",@"lisi",@"wangwu",@"lisi",@"zhangsan"];
 2     
 3     NSMutableDictionary *dict = [NSMutableDictionary dictionary];
 4     for (NSString * str in arr1) {
 5         [dict setObject:str forKey:str];
 6     }
 7     
 8     NSMutableArray * arr2 = [NSMutableArray arrayWithObjects:[dict allKeys], nil];
 9     
10     NSLog(@"%@",arr2);

輸出結果:

2016-03-21 18:07:32.058 01- nsarray[1829:263154] (
        (
        zhangsan,
        lisi,
        wangwu
    )
)

原理:這個是根據字典的特性:key值唯一,當碰到倆個zhangsan時,他不會在創建一個鍵值對而是給上一個zhangsan的鍵值對再重新賦值

eg:

 NSMutableDictionary *dict = [[NSMutableDictionary alloc]initWithObjects:@[@"zhangsan",@"lisi"] forKeys:@[@"1",@"1"]];

    NSLog(@"%@",dict);

輸出結果:

2016-03-21 18:09:54.571 01- nsarray[1865:265560] {
    1 = lisi;
}

 


免責聲明!

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



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