您的位置:首页 > 其它

oc 知识总结四 (NSSet、NSMutableSet)

2015-12-29 17:02 330 查看
注:集合是一组单值对象的集合,同一个对象只能保存一个,且集合中的元素是无序的。

一、NSSet(不可变集合)

1、NSSet的创建
(1)创建一个空集合

NSSet *set = [NSSetset];
(2)创建单个对象的集合

NSSet *set = [NSSetsetWithObject:@"张三"];

(3)创建多个对象的集合
方式一:使用setWithObjects:

NSSet *set1=[NSSetsetWithObjects:@"hello",@"world",@"haha",nil];

方式二:使用类方法

NSSet *set2=[[NSSetalloc]initWithObjects:@"wa",@"haha",nil];
2、NSSet的常用方法



3、常用方法示例
(1)代码部分

//isEqual是判断两个对象是否是同一个对象

//集合存入数据的顺序和输出顺序不一定一样,集合元素是无序的。

//集合是一组单值对象的集合,同一个对象只能保存一个

// 1、创建一个空集合,此处的set是集合

NSSet *set=[NSSetset];

// 2、创建单个对象的集合

NSSet *set0=[NSSetsetWithObject:@"张三"];

// 3、创建多个对象的集合

//方式一:

NSSet *set1=[NSSetsetWithObjects:@"hello",@"world",@"haha",nil];

//方式二:

NSSet *set2=[[NSSetalloc]initWithObjects:@"wa",@"haha",nil];

//NSSet常用的方法,无符号类型要用%lu

NSUInteger count =[set1count];

NSLog(@"集合1有%lu个元素",count);

//以数组的形式获取集合中的所有对象

NSArray *allObjects=[set2allObjects];

//返回集合中的任意一个对象(随机取对象)

id obj1=[set1anyObject];

NSLog(@"randWord= %@",obj1);

//判断是否包含某个对象(isContain/isExit)

BOOL isContain =[set2containsObject:@"wa"];

NSLog(@"%@",isContain?@"包含":@"不包含");

//判断两个集合中的元素是否存在相同元素的对象,两个集合是否有交集

BOOL isIntersect=[set2intersectsSet:set1];

NSLog(@"%@",isIntersect?@"存在相同元素的对象":@"不存在相同元素的对象");

//判断两个集合中的元素是否完全匹配

BOOL isEqual=[set2isEqualToSet:set1];

//判断一个集合是否是另一个集合的子集合,如果set2中所有元素都存在于set1,返回true

BOOL isSubSet=[set2isSubsetOfSet:set1];

NSLog(@"%@",isSubSet?@"set2是set1的子集合":@"set2不是set1的子集合");

//1.向集合中添加一个新元素,返回一个新的集合

NSSet *newSet=[set1setByAddingObject:@"admin"];

NSLog(@"%@",newSet);

//2.向集合中添加一个新元素,改变原来的集合,一般不使用

set1=[set1 setByAddingObject:@"admin"];

NSLog(@"%@",set1);

//将集合A的所有元素赋值给另一个集合B,返回一个新的集合C,自身是不改变的

NSSet *newSet1=[set1setByAddingObjectsFromSet:set2];

NSLog(@"%@",newSet1);

NSLog(@"%@,%@",set1,set2);

//遍历方法1

for(NSString *objin newSet1){

NSLog(@"%@",obj);

}

//遍历方法2

NSArray *newArr=[newSet1allObjects];

for(int i=0;i<newSet1.count;i++){

NSString *str=[newArrobjectAtIndex:i];

NSLog(@"%@",str);

}

(2)输出结果



2、NSMutableSet(可变集合)

1、简介:可变集合继承自NSSet
2、可变集合的创建
(1)创建一个空的集合

NSMutableSet *set=[NSMutableSetset];
(2)创建单个对象的集合

NSMutableSet *set = [NSMutableSetsetWithObject:@"1"];

(3)创建多个对象的集合

NSMutableSet *set1 = [NSMutableSetsetWithObjects:@"1",@"2",@"3"
,nil];

NSMutableSet *set2 = [[NSMutableSetalloc]initWithObjects:@"3",@"2",@"1",nil];
3、常用方法



4、可变集合的交并差
(1)代码部分

NSMutableSet *set1=[NSMutableSetset];

[set1 addObject:@"张三"];

[set1 addObject:@"李四"];

[set1 addObject:@"王五"];

[set1 removeObject:@"王五"];

[set1 addObject:@"李四"];

NSMutableSet *set2=[NSMutableSetset];

[set2 addObject:@"张三"];

[set2 addObject:@"李斯"];

[set2 addObject:@"王无"];

//并集

[set1 unionSet:set2];

for(NSString *namein set1){

NSLog(@"并集:%@",name);

}

//交集

[set1 intersectSet:set2];

for(NSString *namein set1){

NSLog(@"交集:%@",name);

}

//差集(在A中存在而不存在B中的对象)

[set1 minusSet:set2];

for(NSString *namein set1){

NSLog(@"差集:%@",name);

}

(2)输出结果
1>并集的结果:



2>交集的结果



3>差集的结果

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: