本文转载至 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]];

}

}

顺序就不会乱了。

最新文章

  1. python_元组
  2. C#结合js 上传文件和删除文件(技术点有:asp.net mvc ,nhibernate,ajax等)
  3. (转)Asp.NetURL重写的一种方法
  4. PHP代码为什么不能直接保存HTML文件——&amp;gt;PHP生成静态页面教程
  5. Shiro-授权
  6. 第三十 访问财富进退自如 —Spring交易管理
  7. HDU 1331 Function Run Fun(记忆化搜索)
  8. Asp.net mvc 知多少(三)
  9. 实现Unity编辑器模式下的旋转
  10. 【Egret】中tree组件使用案例
  11. meta标签的name和http-equiv属性
  12. SpringBoot工作机制
  13. java 5线程中 Semaphore信号灯,CyclicBarrier类,CountDownLatch计数器以及Exchanger类使用
  14. Python内置函数(31)——id
  15. mysql开启远程登陆(修改数据表和授权两种方法)
  16. 移植 Qt 至 tiny210 详细过程
  17. POJ 2253 Frogger (Floyd)
  18. js几个经典的题目详解
  19. ORACLE在IMP时候出现数据丢失
  20. Lodop打印控件里SET_PRINT_STYLE和SET_PRINT_STYLEA

热门文章

  1. 【转】angular中$parse详解教程
  2. Linux学习笔记 (六)用户管理命令
  3. matlab中syms与sym有什么差别
  4. WebUI中 DataGrid多层表头 的终极解决办法
  5. go实现定时功能两种方法
  6. CentOS 6.3下部署LVS(NAT)+keepalived实现高性能高可用负载均衡(转)
  7. nodejs 获取指定路径下所有的文件夹名
  8. nginx环境下启动php-fpm
  9. Linux 查看CPU个数和磁盘个数
  10. Atitit.播放系统规划新版本&#160;and&#160;最近版本回顾&#160;v3&#160;&#160;pbf.doc