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;
}

 

转载于:https://www.cnblogs.com/fengzhihao/p/5302994.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值