zoukankan      html  css  js  c++  java
  • 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;
    }
    
  • 相关阅读:
    js 字符中 带 函数 再传对象参数
    window server 2012 II8 假陌生 碰到的问题
    IIS 下载文件 报错“401
    easyui使用时出现这个Uncaught TypeError: Cannot read property 'combo' of undefined
    eclipse+gnuarm+使用报错
    mini2440:通过JLink烧写BootLoader到Nor Flash
    在Linux中搭建一个FTP服务器
    SPFA模板
    Bellman_ford模板
    前向星&链式前向星
  • 原文地址:https://www.cnblogs.com/fengzhihao/p/5302994.html
Copyright © 2011-2022 走看看