【转】 OC基础数据类型-NSSet
原文 : http://www.cnblogs.com/GISerYang/p/3340937.html
1、集合:集合(NSSet)和数组(NSArray)有相似之处,都是存储不同的对象的地址;不过NSArray是有序的集合,NSSet是无序的集合。
集合是一种哈希表,运用散列算法,查找集合中的元素比数组速度更快,但是它没有顺序。
1 NSSet * set = [[NSSet alloc] initWithObjects:@"one",@"two",@"three",@"four", nil];
2 [set count]; //返回集合中对象的个数
判断集合中是否拥有某个元素
1 //判断集合中是否拥有@“two”
2 BOOL ret = [set containsObject:@"two"];
判断两个集合是否相等
1 NSSet * set2 = [[NSSet alloc] initWithObjects:@"one",@"two",@"three",@"four", nil];
2 //判断两个集合是否相等
3 BOOL ret = [set isEqualToSet:set2];
判断set是否是set2的子集合
1 NSSet * set2 = [[NSSet alloc] initWithObjects:@"one",@"two",@"three",@"four",@"five", nil];
2 //判断set是否是set2的子集合
3 BOOL ret = [set isSubsetOfSet:set2];
集合也可以用枚举器来遍历
1 //集合也可以用枚举器来遍历
2 NSEnumerator * enumerator = [set objectEnumerator];
3 NSString *str;
4 while (str = [enumerator nextObject]) {
5 ……
6 }
通过数组来初始化集合(数组转换为集合)
1 NSArray * array = [[NSArray alloc] initWithObjects:@"one",@"two",@"three",@"four", nil];
2 NSSet * set = [[NSSet alloc] initWithArray:array];
集合转换为数组
1 NSArray * array2 = [set allObjects];
2、可变集合NSMutableSet
1 //可变集合NSMutableSet
2 NSMutableSet * set = [[NSMutableSet alloc] init];
3 [set addObject:@"one"];
4 [set addObject:@"two"];
5 [set addObject:@"two"]; //如果添加的元素有重复,实际只保留一个
删除元素
1 //删除元素
2 [set removeObject:@"two"];
3 [set removeAllObjects];
将set2中的元素添加到set中来,如果有重复,只保留一个
1 //将set2中的元素添加到set中来,如果有重复,只保留一个
2 NSSet * set2 = [[NSSet alloc] initWithObjects:@"two",@"three",@"four", nil];
3 [set unionSet:set2];
删除set中与set2相同的元素
1 [set minusSet:set2];
3、指数集合(索引集合)NSIndexSet
1 //指数集合(索引集合)NSIndexSet
2 NSIndexSet * indexSet = [[NSIndexSet alloc] initWithIndexesInRange:NSMakeRange(1, 3)]; //集合中的数字是123
根据集合提取数组中指定位置的元素
1 //根据集合提取数组中指定位置的元素
2 NSArray * array = [[NSArray alloc] initWithObjects:@"one",@"two",@"three",@"four", nil];
3 NSArray * newArray = [array objectsAtIndexes:indexSet]; //返回@"two",@"three",@"four"
4、可变指数集合NSMutableIndexSet

1 NSMutableIndexSet *indexSet = [[NSMutableIndexSet alloc] init];
2 [indexSet addIndex:0]
3 [indexSet addIndex:3];
4 [indexSet addIndex:5];
5 //通过集合获取数组中指定的元素
6 NSArray *array = [[NSArray alloc] initWithObjects:@"one",@"two",@"three",@"four",@"five",@"six", nil];
7 NSArray *newArray = [array objectsAtIndexes:indexSet]; //返回@"one",@"four",@"six" 总结: 这个集合现在给我的感觉就是用NSIndexSet从NSArray里面取元素比较方便,平常真的很少用到 = =
【转】 OC基础数据类型-NSSet的更多相关文章
- OC基础数据类型-NSSet
1.集合:集合(NSSet)和数组(NSArray)有相似之处,都是存储不同的对象的地址:不过NSArray是有序的集合,NSSet是无序的集合.集合是一种哈希表,运用散列算法,查找集合中的元素比数组 ...
- OC基础--数据类型与表达式
前言 做iOS开发有3年了,从当初的小白到现在,断断续续看过很多资料,之前也写过一些博文来记录,但是感觉知识点都比较凌乱.所以最近准备抽时间把iOS开发的相关知识进行一个梳理,主要分为OC基础.UI控 ...
- OC基础数据类型-NSNumber
1.NSNumber:专门用来装基础类型的对象,把整型.单精度.双精度.字符型等基础类型存储为对象 //基本数据类型 //专门用来装基础类型的对象 NSNumber * intNumber = [[N ...
- Objective-C基础数据类型-NSSet[转]
转自GISerYang 集合: 集合(NSSet)和数组(NSArray)有相似之处,都是存储不同的对象的地址:不过NSArray是有序的集合,NSSet是无序的集合. 集合是一种哈希表,运用散列算法 ...
- OC基础数据类型-NSString
1.字符串的初始化 //字符串的初始化 NSString *str = @"Hello world!"; NSString *str2 = [[NSString alloc] in ...
- OC基础数据类型-NSData-NSMutableData-NSString
NSData和NSMutableData存储的是二进制数据,在文件操作,网络,以及核心图形图像中使用较广泛.NSData创建后不可以再修改,NSMutableData可以再次修改. 1.NSStrin ...
- OC基础数据类型-NSData
1.NSData,数据,当我们需要把一些信息写入到文件里或发送到网络上,我们需要把这些数据转换下,变成纯粹的0.1字符流 1 NSString * str = @"hello, world! ...
- OC基础数据类型-NSValue
1.NSValue:将指针等复杂的类型存储为对象 struct sct { int a; int b; }sctt; NSValue * value = [[NSValue alloc] initWi ...
- OC基础数据类型-NSDictionary
1.字典NSDictionary 字典与数组的区别:数组讲究顺序,而字典可以快速帮助我们找到数据,数据是我们的目的,键是我们的手段 NSDictionary *dict = [[NSDictionar ...
随机推荐
- java 表格项的删除、编辑、增加 修改版
修改之后的java 代码: package com.platformda.optimize; import java.awt.BorderLayout; import java.awt.Button; ...
- bzoj3166
首先不难想到穷举次大数然后我们只要找到满足这个数是次大数的最大区间即可显然答案只可能是这两种[LL[i]+1,R[i]-1]和[L[i]+1,RR[i]-1]L[i]表示这个数ai左侧第一个比它大的数 ...
- maven配置默认jdk版本
在maven的默认配置中,对于jdk的配置是1.4版本,那么创建/导入maven工程过程中,工程中未指定jdk版本. 对工程进行maven的update,就会出现工程依赖的JRE System Lib ...
- -_-#【Markdown】
nswbmw / N-blog 第2章 使用 Markdown Markdown 语法说明 (简体中文版)Markdown: Basics (快速入门) 这里示范了一些 Markdown 的语法, 请 ...
- XP与Win2003下网站配置
一. 安装.net 4.0 1. 双击打开文件dotNetFx40_Full_x86_x64.exe.如图4.1 所示 (图4.1) 2. 勾选[我已阅读并结束许可条款],点击[安装]按钮.如图4.2 ...
- phpmyadmin万能密码
影响版本:2.11.3 / 2.11.4 利用方法:用户名处写入‘localhost’@'@”则登录成功. (注意全部是英文标点符号,最后一个为英文双引号)
- 广州Uber优步司机奖励政策(1月25日~1月31日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- Telephone directory - SGU 127(水)
题目大意:有一个电话簿,每页最多纪录K行电话,现在有N个电话要记录在电话薄上,要求同页的电话号码的首位要相同,电话簿的前两页是纪录的别的东西,问最少需要多少页电话簿. 分析:直接求首位数字有多少个即可 ...
- db2官方SQLSTATE代码提示
官网地址:http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/com.ibm.db2.udb.doc/core/r0 ...
- 垃圾脚本黑我linux服务器
今天接到短信 阿里云Linux服务器被黑 脚本如下: echo "sh /etc/chongfu.sh &" >> /etc/rc.local : 开机自启动 ...