iOS 数组的去重(普通的无序的去重和排序好的去重)
本文转载至 http://blog.csdn.net/zhaopenghhhhhh/article/details/24972645
有时需要将NSArray中去除重复的元素,而存在NSArray中的元素不一定都是NSString类型。今天想了想,加上朋友的帮助,想到两种解决办法,先分述如下。
1.利用NSDictionary的AllKeys(AllValues)方法
可以将NSArray中的元素存入一个字典,然后利用AllKeys或者AllValues取得字典的所有键或值,这些键或值都是去重的。
示例代码:
NSArray *arr = @[@111,@222,@111];
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
for (NSNumber *number in arr) {
[dict setObject:number forKey:number];
}
NSLog(@"%@",[dict allValues]);
输出结果为:
2013-05-21 12:03:49.449 test1[4377:c07] (
111,
222
)
2.利用NSSet的AllObjects方法
这种方法更快,利用NSSet不会添加重复元素的特性。不过去重的数组没有进行排序,如果需要排序,可以使用NSSortDescriptor类。
示例代码:
NSArray *arr = @[@111,@222,@111];
NSSet *set = [NSSet setWithArray:arr];
NSLog(@"%@",[set allObjects]);
输出结果为:
2013-05-21 12:06:26.508 test1[4547:c07] (
111,
222
)
排序的去重
很多时候可能会遇到需要去除NSArray重复的元素,用了很多方法。
最方便快捷的是NSSet.但是NSSet去重后有时候数组元素的顺序会
打乱。于是换了另外一种方法如下:
NSMutableArray *categoryArray = [[NSMutableArray alloc] init];
for (unsigned i = 0; i < [nameArray count]; i++){
if ([categoryArray containsObject:[nameArray objectAtIndex:i]] == NO){
[categoryArray addObject:[nameArray objectAtIndex:i]];
}
}
顺序就不会乱了。
最新文章
- python_元组
- C#结合js 上传文件和删除文件(技术点有:asp.net mvc ,nhibernate,ajax等)
- (转)Asp.NetURL重写的一种方法
- PHP代码为什么不能直接保存HTML文件——&;gt;PHP生成静态页面教程
- Shiro-授权
- 第三十 访问财富进退自如 —Spring交易管理
- HDU 1331 Function Run Fun(记忆化搜索)
- Asp.net mvc 知多少(三)
- 实现Unity编辑器模式下的旋转
- 【Egret】中tree组件使用案例
- meta标签的name和http-equiv属性
- SpringBoot工作机制
- java 5线程中 Semaphore信号灯,CyclicBarrier类,CountDownLatch计数器以及Exchanger类使用
- Python内置函数(31)——id
- mysql开启远程登陆(修改数据表和授权两种方法)
- 移植 Qt 至 tiny210 详细过程
- POJ 2253 Frogger (Floyd)
- js几个经典的题目详解
- ORACLE在IMP时候出现数据丢失
- Lodop打印控件里SET_PRINT_STYLE和SET_PRINT_STYLEA
热门文章
- 【转】angular中$parse详解教程
- Linux学习笔记 (六)用户管理命令
- matlab中syms与sym有什么差别
- WebUI中 DataGrid多层表头 的终极解决办法
- go实现定时功能两种方法
- CentOS 6.3下部署LVS(NAT)+keepalived实现高性能高可用负载均衡(转)
- nodejs 获取指定路径下所有的文件夹名
- nginx环境下启动php-fpm
- Linux 查看CPU个数和磁盘个数
- Atitit.播放系统规划新版本&#160;and&#160;最近版本回顾&#160;v3&#160;&#160;pbf.doc