OC基础数据类型-NSSet

转载 2015年07月10日 23:44:44

1、集合:集合(NSSet)和数组(NSArray)有相似之处,都是存储不同的对象的地址;不过NSArray是有序的集合,NSSet是无序的集合。
集合是一种哈希表,运用散列算法,查找集合中的元素比数组速度更快,但是它没有顺序。

  NSSet * set = [[NSSet alloc] initWithObjects:@"one",@"two",@"three",@"four", nil];
  [set count]; //返回集合中对象的个数

判断集合中是否拥有某个元素

 //判断集合中是否拥有@“two”
 BOOL ret = [set containsObject:@"two"];

判断两个集合是否相等

 NSSet * set2 = [[NSSet alloc] initWithObjects:@"one",@"two",@"three",@"four", nil];
 //判断两个集合是否相等
 BOOL ret = [set isEqualToSet:set2];

判断set是否是set2的子集合

 NSSet * set2 = [[NSSet alloc] initWithObjects:@"one",@"two",@"three",@"four",@"five", nil];
 //判断set是否是set2的子集合
 BOOL ret = [set isSubsetOfSet:set2];

集合也可以用枚举器来遍历

 //集合也可以用枚举器来遍历
 NSEnumerator * enumerator = [set objectEnumerator];
 NSString *str;
 while (str = [enumerator nextObject]) {
     ……
 }

通过数组来初始化集合(数组转换为集合)

NSArray * array = [[NSArray alloc] initWithObjects:@"one",@"two",@"three",@"four", nil];
 NSSet * set = [[NSSet alloc] initWithArray:array];

集合转换为数组

 NSArray * array2 = [set allObjects];

2、可变集合NSMutableSet

 //可变集合NSMutableSet
 NSMutableSet * set = [[NSMutableSet alloc] init];
 [set addObject:@"one"];
 [set addObject:@"two"];
 [set addObject:@"two"]; //如果添加的元素有重复,实际只保留一个

删除元素

 //删除元素
 [set removeObject:@"two"];
 [set removeAllObjects];

将set2中的元素添加到set中来,如果有重复,只保留一个

 //将set2中的元素添加到set中来,如果有重复,只保留一个
 NSSet * set2 = [[NSSet alloc] initWithObjects:@"two",@"three",@"four", nil];
 [set unionSet:set2];

删除set中与set2相同的元素

 [set minusSet:set2];

3、指数集合(索引集合)NSIndexSet

 //指数集合(索引集合)NSIndexSet
 NSIndexSet * indexSet = [[NSIndexSet alloc] initWithIndexesInRange:NSMakeRange(1, 3)]; //集合中的数字是123

根据集合提取数组中指定位置的元素

 //根据集合提取数组中指定位置的元素
 NSArray * array = [[NSArray alloc] initWithObjects:@"one",@"two",@"three",@"four", nil];
 NSArray * newArray = [array objectsAtIndexes:indexSet]; //返回@"two",@"three",@"four"

4、可变指数集合NSMutableIndexSet

 NSMutableIndexSet *indexSet = [[NSMutableIndexSet alloc] init];
 [indexSet addIndex:0]
 [indexSet addIndex:3];
 [indexSet addIndex:5];
 //通过集合获取数组中指定的元素
 NSArray *array = [[NSArray alloc] initWithObjects:@"one",@"two",@"three",@"four",@"five",@"six", nil];
 NSArray *newArray = [array objectsAtIndexes:indexSet]; //返回@"one",@"four",@"six"


OC基础数据类型-集合(NSSet)

1、集合:集合(NSSet)和数组(NSArray)有相似之处,都是存储不同的对象的地址;不过NSArray是有序的集合,NSSet是无序的集合。 集合是一种哈希表,运用散列算法,查找集合中的元素比...
  • uhiuloljuu
  • uhiuloljuu
  • 2015年01月23日 15:04
  • 141

1、OC基本数据类型

在介绍基本数据类型之前,先扯点别的,OC中的所有变量都要求先声明后使用,声明变量时需要指定数据类型,也要指定变量名,说起变量名,就要先看一下标识符规则,标识符就是用于给程序中的变量、类、方法命名的符号...
  • li460998973
  • li460998973
  • 2014年12月04日 14:46
  • 2804

OC基础-NSSet集合

一、集合的概念 集合中的元素是无序不重复的。 集合和数组类似,区别在于:数组的元素是有序的,集合的元素是无序的。 集合的种类: NSSet -NSMutableSet NSIndexSet -NSM...
  • Z18789231876
  • Z18789231876
  • 2015年09月25日 17:55
  • 289

OC中的常用数据类型

计算机中的文件分为“二进制文件”和“文本文件”,其中图片、视频、音频等就是二进制文件,像“.txt”的文件就是文本文件。客户端与服务器端,或者客户端与客户端数据交流的格式为二进制(字节流)。在OC中使...
  • qq_35757299
  • qq_35757299
  • 2016年08月12日 18:08
  • 450

【iOS开发】OC变量和基本数据类型-精度

oc数据类型数据类型:基本数据类型、指针数据类型基本数据类型:数值型、字符型(char)、布尔型、空类型(void)指针数据类型:类(class)、id数值型:整数类型int、浮点型float、dou...
  • Hanrovey
  • Hanrovey
  • 2017年01月13日 14:04
  • 1636

NSSet的使用及常用方法(如初始化、并集、交集、删除、添加、修改等)

1 set集合中一种 2 set是无序(不像array那样有顺序),例如:元素分别是@"1", @"2", @"3",实际显示时,可能是@"1", @"3", @"2",或@"2", @"3", @...
  • potato512
  • potato512
  • 2016年05月23日 16:50
  • 1692

NSSet使用小结

#import int main(int argc, const char * argv[]) { @autoreleasepool { NSSet ...
  • ms2146
  • ms2146
  • 2013年03月10日 21:29
  • 14607

OC中的数据类型和运算符

现在正在学习OC,就把我最近学习的历程跟大家分享一下,希望能对后来者有帮助,写的不好的地方希望大家给予建议     1.注释     在编写程序时,注释是非常重要的。我跟大家一些刚学编程的...
  • tangjun201
  • tangjun201
  • 2015年05月07日 16:40
  • 2569

OC基础-零基础学习Objective-C:第一部分.类和对象

本人也是Objective-C的小白,以下只是记录我学习过程的历程,如有不对的地方或者疑问欢迎指正。 原发表在新浪微博上,现转移到这里 必备工具: 1.一本书,建议《Objective-C基础教程...
  • l522402543
  • l522402543
  • 2015年08月28日 21:45
  • 951

关于NSSet的一点总结

集合(NSSet)和数组(NSArray)有相似之处,都是存储不同的对象的地址; 不过NSArray,NSDictionary是有序的集合,NSSet是无序的集合。(有序存储:在内存中的存储位置连续...
  • reylen
  • reylen
  • 2015年10月15日 09:13
  • 1015
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:OC基础数据类型-NSSet
举报原因:
原因补充:

(最多只允许输入30个字)