六十二、基础框架(二十)集合物件
来源:互联网 发布:linux 系统添加wifi 编辑:程序博客网 时间:2024/05/22 04:26
集合 是 由若干独一无二的物件 构成的。集合 可以是 可修改的,也可以是 不可修改的。我们 可以 在集合当中 搜索 某个物件、添加 或者 去除 某个物件,我们 还可以比较 两个集合,求 两个集合的交集 或者 并集。
如果 要 在程序当中 使用 集合这类物件,那么 程序中 需要加入 下面这行语句:
接下来的程序 示范了 关于集合的一些基本操作。如果 你 想要 在程序执行的过程当中 多次 显示 集合的内容,那么 就需要编写 一项新的适用于NSSet这类物件的措施,叫做 print。我们 可以通过创建一个新的类别 来添加 print这项措施。
运行 这个程序 可以得到 这样的结果:
程序中的
这行语句 将 [NSNumber numberWithInteger:v] 命名为 INTEGER_OBJECT(v)。而 [NSNumber numberWithInteger:v]的作用 是 向NSNumber这类物件 发送 numberWithInteger:这条消息 从而 NSNumber这类物件 创建出 一个值为v的整数物件。所以 INTEGER_OBJECT(v)的作用 也就是 创建 一个值为v的整数物件。像 这样 给 某些语句 命名,可以少打 不少字。
这几行语句 给 NSSet这类物件 创建 一个新的类别Printing。Printing这个新的类别当中 包含了 print这项措施,当然 print这项措施 是 适用于NSSet这类物件的。
在print这项措施的实施细则中 利用了 快速枚举的技巧 将 实施对象中的成员 一一 读取 到变量element当中,并且 调用 printf()函数 一一 显示出来。需要注意的 是 print这项措施 只能显示 成员为整数的集合。
向NSSet 或者 NSMutableSet这两类物件 发送 setWithObjects:这条消息 可以创建出 以这条消息的参数为成员的集合。
创建了 三个集合过后,我 对 前两个集合 采取了 print这项措施,将 他们的成员 显示出来。
isEqualToSet:这项措施 用来检查 其实施对象所代表的集合 与 其参数代表的集合所包含的成员 是否一致。
containsObject:这项措施 用来检查 其实施对象所代表的集合当中 是否包含 其参数所代表的成员。
接下来 程序当中 对 集合setOne 分别 采取了 addObject: 和 removeObject:这两项措施。addObject:这项措施 会将其参数所代表的物件 添加到 其实施对象所代表的集合当中。而 removeObject:这项措施 会从其实施对象所代表的集合当中 将 其参数所代表的成员 去除。
接着 在程序当中 我 对 集合setOne 采取了 intersectSet:这项措施,参数 为 集合setTwo。intersectSet:这项措施 会计算出 集合setOne 和 集合setTwo的交集,也就是 找出 这两个集合中 哪些成员 是 都有的。intersectSet:这项措施 会用 两个集合的交集 来覆盖 其实施对象,也就是 集合setOne。
再然后 我 对 集合setOne 采取了 unionSet:这项措施,参数 为 集合setTwo。intersectSet:这项措施 会计算出 集合setOne 和 集合setTwo的并集,也可以叫做 联集。也就是 找出 这两个集合的所有成员。不熟悉的 可以 在网上查找一下 并集的概念。与 intersectSet:这项措施 一样,unionSet:这项措施 也会用 两个集合的并集 来覆盖 其实施对象,也就是说 集合setOne 是 最后的结果。
在基础框架当中 还有 一类集合物件 叫做 NSCountedSet。NSCountedSet这类物件所代表的集合中 允许出现 相同的成员。当某个物件 第一次 添加 到这样的集合中时,集合 就增加了 一个成员。当同样的物件 再次 添加 到这样的集合当中时,集合 就再次增加 一个成员。countForObject:这项措施 可以计算出 其参数所代表的成员 在集合中 出现的次数。
下面表格里的措施 适用于 NSSet这类物件:
措施名称描述+(id)setWithObjects:物件1,物件2,……,nil创建一个新的集合。新创建的集合包含了参数中列举的物件-(id)initWithObject:物件1,物件2,……,nil对已经分配了内存空间的集合进行初始化,并且将参数中的物件添加到集合当中-(NSUInteger)count计算出集合中成员的数量-(BOOL)containObject:物件判断其实施对象中是否包含某个成员-(BOOL)member:物件判断其实施对象中是否包含某个成员-(NSEnumerator *)objectEnumerator:为其实施对象中的成员生成一个NSEnumerator类型的物件-(BOOL)isSubsetOfSet:nsset判断其实施对象中的成员是否在nsset这个集合中出现-(BOOL)intersectsSet:nsset判断其实施对象与nsset是否存在交集-(BOOL)isEqualToSet:nsset判断其实施对象与nsset中的成员是否一致
下面表格中的措施 适用于 NSMutableSet这类物件
措施名称描述+(id)setWithCapacity:size创建容量为size的集合-(id)initWithCapacity:size将已经分配了内存空间的集合的容量设定为size-(void)addObject:物件将物件添加到其实施对象所代表的集合当中-(void)removeObject:物件从其实施对象所代表的集合当中将物件删除-(void)removeAllObjects将其实施对象中的所有成员删除-(void)unionSet:nsset求其实施对象与参数的并集-(void)minusSet:nsset求其实施对象与参数的差集-(void)intersectSet:nsset求其实施对象与参数的交集
- 六十二、基础框架(二十)集合物件
- 四十四、基础框架(二)数字物件
- 五十二、基础框架(十)数组物件-生成 质数表
- 四十六、基础框架(四)字符串物件
- 五十一、基础框架(九)数组物件
- 六十、基础框架(十八)辞典物件
- 八十、基础框架(三十八)复制 物件
- 六十三、基础框架(二十一)文件操作-NSFileManager这类物件
- 六十五、基础框架(二十三)文件操作-数据物件
- 七十一、基础框架(二十九)文件操作-文件操作柄,NSFileHandle这类物件
- 二十、继承(三)Point这类物件
- 二十七、继承(十)抽象的物件类型
- 六十一、基础框架(十九)辞典物件-对 辞典物件 进行快速枚举
- Java基础—集合框架(二)
- 七十、基础框架(二十八)文件操作-复制 文件 以及 NSProcessInfo这类物件的使用
- 八十三、基础框架(四十一)复制 物件-实施 协议
- Java基础--集合框架<二>
- 八十四、基础框架(四十二)复制 物件-在n 和 setN:这两项措施当中 复制 物件
- Mac OS 开发环境设置
- 六十一、基础框架(十九)辞典物件-对 辞典物件 进行快速枚举
- 浅谈C++的多态性 重载 覆盖 隐藏
- 应聘时最漂亮的回答! 留着 早晚用的上
- Android中读取properties文件
- 六十二、基础框架(二十)集合物件
- 4种方法解决IIS 不能运行asp.net
- 伤感qq日志-爱冷了 情淡了、心累了,陌生了
- 六十三、基础框架(二十一)文件操作-NSFileManager这类物件
- lib/util_sock.c:get_peer_addr(1224) getpeername failed. Error was Transport endpoint is not connecte
- 史蒂夫 乔布斯(Steve Jobs)在斯坦福大学2005年毕业典礼上的演讲
- 0002 沙箱1
- 从汇编看volatile
- git 图解