Objective-C语法之集合对象的那些事儿





       集合对象的关键字是NSSet与NSMutableSet。前者是不可变集合,后者是可变集合,Objective-C语言中大部分数据结构都存在可变与不可变两种数据。这里的集合很像Java语言与C语言中的Set,用法基本一样。但是在Objective-C语言中同一个集合可以储存不同对象的数据。下面分享一个例子就很清楚的看出。
1. 创建不可变集合对象
[NSNumber numberWithInteger:9527]; 因为集合中只能存放对象,所以如果要存数字的话要把数字转换成对象方可存入。
[NSSet setWithObjects:...]:创建集合对象,并且初始化集合中的数值,结尾必需使用nil标志。
[set count] ; 得到这个结合对象的长度。
[set containsObject:...]: 判断这个集合中是否存在传入的对象,返回Bool值。
[set objectEnumerator]: 将集合放入迭代器。
[enumerator nextObject]:得到迭代器中的下一个节点数据,使用while遍历这个迭代器,方可遍历集合对象中的对象。
[set isEqualToSet :objset]:判断两个集合是否完全相等,返回Bool值。
[set isSubsetOfSet:objset]:判断集合中的所有数据是否都相等与objeset集合中,返回Bool值。
[set istersectSet:objset]:判断集合中的至少有一个数据相等与objeset集合中,返回Bool值。
#import <UIKit/UIKit.h> #import "MyClass.h" int main(int argc, char *argv[]) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; //添加我们的测试代码 //创建集合 NSSet *set = [NSSet setWithObjects:@"雨松MOMO",@"15810463139",[NSNumber numberWithInteger: 9527], nil]; //集合的数量 int count = [set count]; NSLog(@"集合中的数量: %d",count); //检测包含 NSString * str = @"雨松MOMO"; if ([set containsObject:str]) { NSLog(@"集合中包含 %@这个对象", str); } //迭代器遍历 NSEnumerator *enumerator = [set objectEnumerator]; NSObject *object = [enumerator nextObject]; while (object != nil) { NSLog(@"迭代器遍历集合中的数据: %@",object); object = [enumerator nextObject]; } //快速枚举遍历 for (NSObject *object in set) { NSLog(@"快速枚举遍历集合中的数据: %@",object); } int retVal = UIApplicationMain(argc, argv, nil, nil); [pool release]; return retVal; }
2.创建可变集合对象

NSMutableSet 继承NSSet ,所以可以使用父类的方法。

[NSMutableSet setWithCapacity:10]:创建可变集合对象,并且初始化长度为10。
[set addObject: obj] : 向集合中动态的添加对象。
[set removeObject:obj]:删除集合中的一个对象。
[set removeAllObjects]:删除集合中的所有对象。
[set unionSet:obj]:向集合中添加一个obj集合的所有数据。
[set minusSet:obj]:向集合中删除一个obj集合的所有数据。
[set intersectSet]:向集合中删除一个不包含obj集合的所有数据。

#import <UIKit/UIKit.h> #import "MyClass.h" int main(int argc, char *argv[]) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; //添加我们的测试代码 //创建集合 NSMutableSet *set = [NSMutableSet setWithCapacity:10]; //添加数据 [set addObject:@"雨松MOMO"]; [set addObject:[NSNumber numberWithInt:9527]]; //添加数据在删除 NSString *str = @"删除我"; [set addObject:str]; //删除它 [set removeObject:str]; //快速枚举遍历 for (NSObject *object in set) { NSLog(@"快速枚举遍历集合中的数据: %@",object); } int retVal = UIApplicationMain(argc, argv, nil, nil); [pool release]; return retVal; }
集合之美,不解释!哇咔咔~ 晚安喔 !!!

转载于:https://www.cnblogs.com/xuanyusong/archive/2011/09/27/2238553.html

Objective-C语法之集合对象的那些事儿(九)相关推荐

  1. Objective-C语法之Object对象的那些事儿(五)

    Objective-C语法之Object对象的那些事儿 创建一个类 鼠标右键单击HelloWorld工程,弹出列表选择框后 单击 New File... 在工程中添加一个新的文件. 选择创建一个Obj ...

  2. IPHONE 开发 9 -- Object C static关键字,数组对象,词典,动态词典,集合对象,函数调用关系...

    警告:  static 写在interface外面编译是没有错误的,但是编译器会报警告,这么说这样的写法是不被编辑器认可的. 错误:static 写在interface里面会直接报错,显然这样的语法是 ...

  3. JSON语法之JSON 对象

    JSON 对象是一个无序的key/value对的集合.一个对象以 '{' 开始,以 '}' 结束:每个key 和 value 中使用冒号分隔:每个 key/value 对之间使用逗号分隔.如图 1‑4 ...

  4. containskey java_Java Map.containsKey()方法:判断Map集合对象中是否包含指定的键名

    搜索热词 Java 集合类中的 Map.containsKey() 方法判断 Map 集合对象中是否包含指定的键名.如果 Map 集合中包含指定的键名,则返回 true,否则返回 false. 语法: ...

  5. java常用的集合对象_java常用实体类、集合类

    java常用实体类.集合类 [转自51cto博客jichangwei的BLOG] 1:String类,字符串是常量,他们的值在创建之后不能更改,可以共享. equals()用来比较两个字符串的值,== ...

  6. 集合对象的数据绑定(1)

    集合对象的数据绑定 在集合对象的数据绑定中, (1)       绑定源可以是任意实现了枚举接口的集合类对象 (2)       而绑定目标一般是ItemControl类型的UI元素. 在目前的Win ...

  7. java集合对象声明_Java基础————集合类

    原标题:Java基础----集合类 理解集合类 集合类存放于java.util包中. 集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就是指集合中对象的引用(refere ...

  8. C#编程利器之五:集合对象(Collections)

    C#里面的集合对象,是一个很重要的知识点.可以说没有人编程不使用集合.这里我不打算过多的去介绍理论相关的知识,下面和大家分享和学习一下在平时开发中的常用集合对象,以及他们之间的关系. 记得教科书上有这 ...

  9. JS中集合对象(Array、Map、Set)及类数组对象的使用与对比

    JS中集合对象(Array.Map.Set)及类数组对象的使用与对比 在使用js编程的时候,常常会用到集合对象,集合对象其实是一种泛型,在js中没有明确的规定其内元素的类型,但在强类型语言譬如Java ...

  10. Hibernate 中集合对象的抓取策略(Fetching strategies)

    Product.java 代码: package com.b510.examples; /**  * Product entity. @author MyEclipse Persistence Too ...

最新文章

  1. 阿丘科技招聘|图像算法工程师
  2. Windows内核新手上路1——挂钩SSDT
  3. fasttext在二分类问题中,recall与precision值是相同的,why
  4. android 页面无法点击,为什么点击不跳转到下一界面,哪位大神帮瞅瞅
  5. 诗与远方:无题(五十九)
  6. TP3.2项目 MySQL5.7报错1055 group by新特性
  7. java获取作用域的值_Java-springMVC框架:springMVC取参数值、把值放入作用域方法
  8. 银河麒麟服务器操作系统V10SP2安装虚拟化管理软件
  9. Java IO流处理 面试题汇总
  10. 图解 Cisco IOS 命名规范
  11. 【渗透技巧】pop3协议渗透
  12. 杭州地铁四期尘埃落定和我预测差异,看地铁空白地,遥想地铁五期规划
  13. 简单实用计划提醒便签软件 界面简洁功能一目了然
  14. Rais 实现单点登录SSO
  15. oracle 磁带库优势,Oracle StorageTek SL8500模块化磁带库系统介绍.pdf
  16. QT5打开图片并显示
  17. C. Chocolate Bunny
  18. 7-1 计算π的值 (10分)_PTA_Java基础练习
  19. ARM嵌入式开发总结
  20. 云原生数据库整体架构和典型示例

热门文章

  1. Prototype的JSON支持
  2. 【渝粤教育】国家开放大学2018年春季 0538-21T社区护理 参考试题
  3. [渝粤教育] 中国地质大学 高级会计学 复习题 (2)
  4. 基于强化学习的倒立摆控制策略Matlab实现(附代码)
  5. ***基于协同过滤,NMF和Baseline的推荐算法
  6. 【Python3 爬虫】12_代理IP的使用
  7. 错误处理与调试[下]
  8. pyhthon Opencv截取视频中的图片
  9. WLC HA (for AP)?
  10. C语言复习---输出魔方阵