NSSet和NSArray的区别
2015-12-11 15:46
302 查看
转载请说明:(谢谢)
http://blog.csdn.net/a21064346/article/details/8055797
点击打开链接
最近在做一个项目,对数据处理这块有一点心得。
如何在添加大量数据时,对数据对象进行筛选只做到数据对象添加一次?
那么你脑子中,就应该有一个 集合,数组的概念了。(NSSet,NSArray我是这么来理解的)。
他们都是一个可以装载对象的容器。
前者可以保证加进来以后的对象唯一,通过hash查询快速,但是无序,杂乱不能确定特定加入之后对象的位置。
后者可以保证装载对象的位置,objectAtIndex方法来取出该位置的对象。还有一些排序的方法,过滤出一个新的数组,但是查找不方便,而且有重复的对象。
那么既想要 前者的唯一,又想要后者的 有序且位置固定,有什么办法吗?
答案是肯定的。
set,和array 都有枚举出所有对象的方法,但是我们这里不用枚举。(数量少,方便快捷,数量巨大会消耗很多时间)。
[csharp] view
plaincopy
NSMutableSet * firstname = [NSMutableSet setWithCapacity:1];
NSArray *fir = [NSArray arrayWithArray:[firstname allObjects]];
if ([fir count]>0) [_dictionaryCombine setValue:fir forKey:@"firstname"];
set有一个allobjects 的方法,他得到的是一个array(内涵所有对象)。
我们再将它赋予给array标记,对fir进行排序,过滤操作即可。
[csharp] view
plaincopy
fir = [fir filteredArrayUsingPredicate:(NSPredicate *)]
这样我们就快捷便利的 将数据 游走与set(不支持index方法) 与array之间。并且可以随时访问到index数据。
http://blog.csdn.net/a21064346/article/details/8055797
点击打开链接
最近在做一个项目,对数据处理这块有一点心得。
如何在添加大量数据时,对数据对象进行筛选只做到数据对象添加一次?
那么你脑子中,就应该有一个 集合,数组的概念了。(NSSet,NSArray我是这么来理解的)。
他们都是一个可以装载对象的容器。
前者可以保证加进来以后的对象唯一,通过hash查询快速,但是无序,杂乱不能确定特定加入之后对象的位置。
后者可以保证装载对象的位置,objectAtIndex方法来取出该位置的对象。还有一些排序的方法,过滤出一个新的数组,但是查找不方便,而且有重复的对象。
那么既想要 前者的唯一,又想要后者的 有序且位置固定,有什么办法吗?
答案是肯定的。
set,和array 都有枚举出所有对象的方法,但是我们这里不用枚举。(数量少,方便快捷,数量巨大会消耗很多时间)。
[csharp] view
plaincopy
NSMutableSet * firstname = [NSMutableSet setWithCapacity:1];
NSArray *fir = [NSArray arrayWithArray:[firstname allObjects]];
if ([fir count]>0) [_dictionaryCombine setValue:fir forKey:@"firstname"];
set有一个allobjects 的方法,他得到的是一个array(内涵所有对象)。
我们再将它赋予给array标记,对fir进行排序,过滤操作即可。
[csharp] view
plaincopy
fir = [fir filteredArrayUsingPredicate:(NSPredicate *)]
这样我们就快捷便利的 将数据 游走与set(不支持index方法) 与array之间。并且可以随时访问到index数据。
相关文章推荐
- intent,requesrcode,resultcode开发总结
- IOS开发 汉字转拼音 把用户名按照姓名首字母进行排序
- Entity Framework 教程
- 【Python】import class/import module
- 经历了一期的项目洗礼的成长
- 织梦自定义专题节点容器模板修正
- 详解SQL中drop、delete和truncate的异同
- BCB 编写 DLL 终极手册
- Java集群优化——dubbo+zookeeper构建高可用分布式集群
- mvc 后台Action输出执行脚本提示框
- 7 Java基础 异常
- C++中的临时对象 zz
- Linux搭载ISO镜像为本地yum源
- linux设备使用--自己的理解
- 2:numpy---ndarray
- 构建高性能服务(二)
- mysql group by 用法解析(详细)
- Android adb端口被占用解决方案
- C语言实现文件之间内容的复制
- 解决ecshop因为动态ip问题登录后台自动退出