NSSet和NSMutableSet是无序的, 但是它保证数据的唯一性。当插入相同的数据时,不会有任何效果。从内部实现来说是hash表,所以可以常数时间内查找一个数据。
1、NSSet的使用
[NSSet setWithSet:(NSSet *)set]; 用另外一个set对象构造
[NSSet setWithArray:(NSArray *)array];用数组构造
[NSSet setWithObjects:...]:创建集合对象,并且初始化集合中的数值,结尾必需使用nil标志。
[set count] ; 得到这个结合对象的长度。
[set containsObject:...]: 判断这个集合中是否存在传入的对象,返回Bool值。
[set objectEnumerator]: 将集合放入迭代器。
[enumerator nextObject]:得到迭代器中的下一个节点数据,使用while遍历这个迭代器,方可遍历集合对象中的对象。
[set isEqualToSet:objset]:判断两个集合是否完全相等,返回Bool值。
[set isSubsetOfSet:objset]:判断集合中的所有数据是否都相等与objeset集合中,返回Bool值。
[set allObjects];
示例代码:
1.1 以NSArray构造set
-
NSArray*array=[[NSArrayalloc]initWithObjects:@"对象abc",@"rongfzh",@"totogo2010",nil];
-
NSSet*set3=[NSSetsetWithArray:array];
-
NSLog(@"%@",set3);
打印:
2012-07-10 09:39:02.015 objectiveC[720:403] {(
rongfzh,
"\U5bf9\U8c61abc",
totogo2010
)}
1.2 set的一些比较方法的使用。
-
intmain(intargc,constchar*argv[])
-
{
-
@autoreleasepool{
-
NSSet*set=[NSSetsetWithObjects:@"25",@"age",@"张三",@"name",@"男",nil];
-
NSSet*set1=[NSSetsetWithObjects:@"25",@"age",@"张三",@"name",@"男",@"性别",nil];
-
-
NSLog(@"setcount:%lu",[setcount]);
-
-
if([setcontainsObject:@"age"]){
-
NSLog(@"set包含age");
-
}
-
-
if([setisEqualToSet:set1]){
-
NSLog(@"set等于set1");
-
}
-
-
if([setisSubsetOfSet:set1]){
-
NSLog(@"setisSubsetOfSetset1");
-
}
-
-
NSArray*array=[setallObjects];
-
NSLog(@"array:%@",array);
-
-
-
NSEnumerator*enumerator=[setobjectEnumerator];
-
for(NSObject*objectinenumerator){
-
NSLog(@"set1里的对象:%@",object);
-
}
-
}
-
return0;
-
}
打印结果:
2012-07-10 09:50:32.018 objectiveC[939:403] set count:5
2012-07-10 09:50:32.020 objectiveC[939:403] set包含age
2012-07-10 09:50:32.021 objectiveC[939:403] set isSubsetOfSet set1
2012-07-10 09:50:32.023 objectiveC[939:403] array:(
age,
25,
"\U7537",
"\U5f20\U4e09",
name
)
2012-07-10 09:50:32.027 objectiveC[939:403] set1里的对象:age
2012-07-10 09:50:32.028 objectiveC[939:403] set1里的对象:25
2012-07-10 09:50:32.028 objectiveC[939:403] set1里的对象:男
2012-07-10 09:50:32.029 objectiveC[939:403] set1里的对象:张三
2012-07-10 09:50:32.029 objectiveC[939:403] set1里的对象:name
2、NSMutableSet的使用
NSMutableSet继承NSSet,它可以使用NSSet的方法。
[NSMutableSet setWithCapacity:6]:创建可变集合对象,并且初始化长度为6。
[set addObject: obj] : 向集合中动态的添加对象。
[set removeObject:obj]:删除集合中的一个对象。
[set removeAllObjects]:删除集合中的所有对象。
[set unionSet:obj]:向集合中添加一个obj集合的所有数据。
[set minusSet:obj]:向集合中删除一个obj集合的所有数据。
[set intersectSet]:向集合中删除一个不包含obj集合的所有数据。
示例代码:
-
intmain(intargc,constchar*argv[])
-
{
-
@autoreleasepool{
-
NSMutableSet*muSet=[NSMutableSetsetWithCapacity:6];
-
[muSetaddObject:@"对象1"];
-
NSSet*set=[NSSetsetWithObjects:@"对象2",@"对象3",@"被企鹅咬了一口",nil];
-
-
[muSetunionSet:set];
-
for(NSObject*objectinmuSet){
-
NSLog(@"allnuSet:%@",object);
-
}
-
NSSet*set1=[NSSetsetWithObjects:@"对象2",@"对象3",nil];
-
-
-
[muSetminusSet:set1];
-
for(NSObject*objectinmuSet){
-
NSLog(@"afterminusSet:%@",object);
-
}
-
-
}
-
return0;
-
}
打印结果:
2012-07-10 10:09:08.194 objectiveC[1156:403] all nuSet:对象1
2012-07-10 10:09:08.196 objectiveC[1156:403] all nuSet:被企鹅咬了一口
2012-07-10 10:09:08.196 objectiveC[1156:403] all nuSet:对象2
2012-07-10 10:09:08.197 objectiveC[1156:403] all nuSet:对象3
2012-07-10 10:09:08.198 objectiveC[1156:403] after minusSet:对象1
2012-07-10 10:09:08.198 objectiveC[1156:403] after minusSet:被企鹅咬了一口
著作权声明:本文由http://blog.csdn.net/totogo2010/原创,
1、NSSet的使用
[NSSet setWithSet:(NSSet *)set]; 用另外一个set对象构造
[NSSet setWithArray:(NSArray *)array];用数组构造
[NSSet setWithObjects:...]:创建集合对象,并且初始化集合中的数值,结尾必需使用nil标志。
[set count] ; 得到这个结合对象的长度。
[set containsObject:...]: 判断这个集合中是否存在传入的对象,返回Bool值。
[set objectEnumerator]: 将集合放入迭代器。
[enumerator nextObject]:得到迭代器中的下一个节点数据,使用while遍历这个迭代器,方可遍历集合对象中的对象。
[set isEqualToSet:objset]:判断两个集合是否完全相等,返回Bool值。
[set isSubsetOfSet:objset]:判断集合中的所有数据是否都相等与objeset集合中,返回Bool值。
[set allObjects];
示例代码:
1.1 以NSArray构造set
-
NSArray*array=[[NSArrayalloc]initWithObjects:@"对象abc",@"rongfzh",@"totogo2010",nil];
-
NSSet*set3=[NSSetsetWithArray:array];
-
NSLog(@"%@",set3);
打印:
2012-07-10 09:39:02.015 objectiveC[720:403] {(
rongfzh,
"\U5bf9\U8c61abc",
totogo2010
)}
1.2 set的一些比较方法的使用。
-
intmain(intargc,constchar*argv[])
-
{
-
@autoreleasepool{
-
NSSet*set=[NSSetsetWithObjects:@"25",@"age",@"张三",@"name",@"男",nil];
-
NSSet*set1=[NSSetsetWithObjects:@"25",@"age",@"张三",@"name",@"男",@"性别",nil];
-
-
NSLog(@"setcount:%lu",[setcount]);
-
-
if([setcontainsObject:@"age"]){
-
NSLog(@"set包含age");
-
}
-
-
if([setisEqualToSet:set1]){
-
NSLog(@"set等于set1");
-
}
-
-
if([setisSubsetOfSet:set1]){
-
NSLog(@"setisSubsetOfSetset1");
-
}
-
-
NSArray*array=[setallObjects];
-
NSLog(@"array:%@",array);
-
-
-
NSEnumerator*enumerator=[setobjectEnumerator];
-
for(NSObject*objectinenumerator){
-
NSLog(@"set1里的对象:%@",object);
-
}
-
}
-
return0;
-
}
打印结果:
2012-07-10 09:50:32.018 objectiveC[939:403] set count:5
2012-07-10 09:50:32.020 objectiveC[939:403] set包含age
2012-07-10 09:50:32.021 objectiveC[939:403] set isSubsetOfSet set1
2012-07-10 09:50:32.023 objectiveC[939:403] array:(
age,
25,
"\U7537",
"\U5f20\U4e09",
name
)
2012-07-10 09:50:32.027 objectiveC[939:403] set1里的对象:age
2012-07-10 09:50:32.028 objectiveC[939:403] set1里的对象:25
2012-07-10 09:50:32.028 objectiveC[939:403] set1里的对象:男
2012-07-10 09:50:32.029 objectiveC[939:403] set1里的对象:张三
2012-07-10 09:50:32.029 objectiveC[939:403] set1里的对象:name
2、NSMutableSet的使用
NSMutableSet继承NSSet,它可以使用NSSet的方法。
[NSMutableSet setWithCapacity:6]:创建可变集合对象,并且初始化长度为6。
[set addObject: obj] : 向集合中动态的添加对象。
[set removeObject:obj]:删除集合中的一个对象。
[set removeAllObjects]:删除集合中的所有对象。
[set unionSet:obj]:向集合中添加一个obj集合的所有数据。
[set minusSet:obj]:向集合中删除一个obj集合的所有数据。
[set intersectSet]:向集合中删除一个不包含obj集合的所有数据。
示例代码:
-
intmain(intargc,constchar*argv[])
-
{
-
@autoreleasepool{
-
NSMutableSet*muSet=[NSMutableSetsetWithCapacity:6];
-
[muSetaddObject:@"对象1"];
-
NSSet*set=[NSSetsetWithObjects:@"对象2",@"对象3",@"被企鹅咬了一口",nil];
-
-
[muSetunionSet:set];
-
for(NSObject*objectinmuSet){
-
NSLog(@"allnuSet:%@",object);
-
}
-
NSSet*set1=[NSSetsetWithObjects:@"对象2",@"对象3",nil];
-
-
-
[muSetminusSet:set1];
-
for(NSObject*objectinmuSet){
-
NSLog(@"afterminusSet:%@",object);
-
}
-
-
}
-
return0;
-
}
打印结果:
2012-07-10 10:09:08.194 objectiveC[1156:403] all nuSet:对象1
2012-07-10 10:09:08.196 objectiveC[1156:403] all nuSet:被企鹅咬了一口
2012-07-10 10:09:08.196 objectiveC[1156:403] all nuSet:对象2
2012-07-10 10:09:08.197 objectiveC[1156:403] all nuSet:对象3
2012-07-10 10:09:08.198 objectiveC[1156:403] after minusSet:对象1
2012-07-10 10:09:08.198 objectiveC[1156:403] after minusSet:被企鹅咬了一口
著作权声明:本文由http://blog.csdn.net/totogo2010/原创,
分享到:
相关推荐
.4jecCiEe C语法R-11eCr-1,DC34le1eC魏先宇的程序人生魏先宇的程序人生多读M多bM多思M方有多得!NSEnumerator *enum
NSSet、NSMutableSet、NSOrderedSet、NSMutableOrderedSet了解与学习
详细的说明和用法 NSArray,NSSet,NSDictionary 以及他们子类的说明
object-c基础语法NSSet集合, 适合初学者,主要学习集合NSSet的设置、判断集合中是否包含某个对象、快速枚举遍历、判断集合是否相等,可变集合的操作等
一些NSArray,NSDictionary,NSSet相关的算法知识1
NSArray,NSSet,NSEnumerator,NSDictionary及对应Mutable介绍,有对应的实例代码
这是NSArray,NSSet,NSEnumerator,NSDictionary及对应Mutable介绍的示例程序,具体参考: http://blog.csdn.net/htttw/article/details/7884218
主要介绍了iOS集合遍历(NSArray、NSDictionary、NSSet)的方法,文中给出了详细的方法示例,并总结了各个方法的优缺点来供大家学习参考,需要的朋友们下面来一起看看吧。
NSSet NSString NSTimer NSURL UIKit UIBezierPath UIButton UIColor UIDevice UIImage UIImageView UILable UINavigationController UIResponder UIScrollView UISearchBar UITableViewCell UITextField ...
Software engineering,programming language,operating system,iOS,OS,iPhone,iPad objective c,cocoa touch,...NSDate,NSArray,NSMutableArray,NSMutableDictionary,NSSet,NSOrderedSet,NSMutableSet,
NSDictionary,NSArray,NSSet和NSString尚未隐式转换为Dictionary,Array,Set和String。 为了在这些类型之间进行转换,我们已向这些类型临时添加了一个协议,以允许对其进行转换。 有一种方法称为bridge() 。 ...
开发中经常需要打印日志以查看数据是否正确,或者说查看数据的格式。但是,苹果对于我们的NSDictionary、NSSet、NSArray等值有中文时,打印出来的是Unicode编码,人类无法直接读懂,因此,笔者研究研究如何将打印...
鹏哥哥放大镜 封装好 线程安全 无泄漏 简单易用 移植性好 使用中有问题 请前去GitHub与我联系 感谢您的使用 对您有帮助的话 送我一颗星星可好 使用简介: 1.PGGMagnigierView导入放大镜类 也可以在这里面进行镜框...
首先,我们需要创建两个NSSet实例,它们可以帮助您读写健康数据。 然后,您需要初始化HKHealthStore,这可以帮助您保存健康数据。 稍后,我们需要授权。 如您所见,如果您想保存数据,则需要授权的iOS平台可以...
FastCoder支持比JSON或Plist编码更多的数据类型(包括NSURL,NSValue,NSSet和NSOrderedSet),并且允许将所有受支持的对象类型用作字典中的键,而不仅仅是字符串。 FastCoder还可以使用属性检查自动序列化您的...
通过遵循外部库中定义的类型并为其生成定义,确保类型定义是完整的。 还可以为类型库中的一个或多个特定类型生成定义。 可选地,可以将定义打包为在DefinitelyTyped上发布,如此和。 使用者介面 图书馆 第一步是...
前言 iPad 会发生闪退 ,然而无法在iPhone重现。 最终定位是因为执行了一些废弃的代码。这代码里面将一个空的按钮对象设置图片。 导致这样的问题,是因为之前的同事代码删除的只是删除了一半,注释了赋值代码,却...
C的内存管理614.6.1 引用计数值614.6.2 对象释放池634.7 Objective-C的继承644.7.1 继承的语法654.7.2 继承的用法664.8 Objective-C的多态性、动态类型和动态绑定674.8.1 多态性674.8.2 动态绑定和动态类型...