博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数组去重复
阅读量:7114 次
发布时间:2019-06-28

本文共 1081 字,大约阅读时间需要 3 分钟。

1.开辟新的内存空间

判断是否存在,若不存在则添加到数组中,得到最终结果的顺序不发生变化

NSArray *originalArr = @[@1, @2, @3, @1, @3]; NSMutableArray *resultArrM = [NSMutableArray array]; for (NSString *item in originalArr) { if (![resultArrM containsObject:item]) { [resultArrM addObject:item]; } } NSLog(@"result : %@", resultArrM);

2.利用NSDictionary的AllKeys(AllValues)方法

可以将NSArray中的元素存入一个字典,然后利用AllKeys或者AllValues取得字典的所有键或值,这些键或值都是去重的

NSArray *originalArr = @[@1, @2, @3, @1, @3]; NSMutableDictionary *dictM = [NSMutableDictionary dictionary]; for (NSNumber *n in originalArr) { [dict setObject:n forKey:n]; } NSLog(@"%@",[dictM allValues]);

注:结果为无序的, 也就是说不包吃原有顺序, 可自行加入排序算法

3.利用NSSet特性, 放入集合自动去重

NSSet的特性: 确定性、无序性、互异性

这种方法更快,利用NSSet不会添加重复元素的特性。不过去重的数组没有进行排序,如果需要排序,可以使用NSSortDescriptor类。

NSArray *originalArr = @[@1, @2, @3, @1, @3];    NSSet *set = [NSSet setWithArray:originalArr];    NSLog(@"result: %@", [set allObjects]);

4.通过valueForKeyPath, 去重只需一行代码

NSArray *originalArr = @[@1, @2, @3, @1, @3];    NSArray *result = [originalArr valueForKeyPath:@"@distinctUnionOfObjects.self"];

5.手动去重

用眼看着,一个一个挑选出来,重新输入计算机(开个玩笑)

 

转载地址:http://vighl.baihongyu.com/

你可能感兴趣的文章
ZOJ1070 Bode Plot
查看>>
[LeetCode] Graph Valid Tree
查看>>
web程序员标准环境之DreamWeaver【推荐】
查看>>
springMvc源码学习之:利用springMVC随时随地获取HttpServletRequest等对象
查看>>
无限分页
查看>>
iOS - UIColor
查看>>
Java最最常用的100个类排序(非官方)
查看>>
C#如何控制方法的执行时间,超时则强制退出方法执行
查看>>
【Python】模块之subprocess
查看>>
由一条报警信息发现的一系列问题
查看>>
Oracle Executable Binary Mismatch Detected
查看>>
Mysql Innodb中的Linux native异步I/O(一) 内存结构的初始化
查看>>
WM Activate Storage Bin Type Search(十四)
查看>>
nim的引用和指针
查看>>
DirectUI: Become windowless
查看>>
Python 数据结构_队列
查看>>
NAS数据迁移初探
查看>>
打破医院围墙 数字化平台之上的想象力
查看>>
Teradata首席分析官Bill Franks:数据分析变革犹如一场工业革命
查看>>
Linux下安装并使用Java开发opencv的配置
查看>>