/*
NSSet 集合
在一個NSSet對象中,某個特定的對象只能出現一次。
NSSet對象最大的用處是檢查某個對象是否存在。速度快
NSSet與NSArray比較
相同:1.都用來存放OC對象
2.都不可以直接存儲基本數據類型、結構體、枚舉
3.本身都不可變,但是都有一個可變的子類
區別:1.NSArray是有順序的, NSSet是無序的
2.NSSet裡面的元素是不重復的
*/
//========================================================
//創建一個空的set,裡面不能再添加元素
// NSSet *set1 = [NSSet set];
//創建set,裡面有一個元素
NSSet *set2 = [NSSet setWithObject:@"abc"];
//創建多個元素的set
Car *car1 = [Car new];
Car *car2= [Car new];
NSSet *set3 = [NSSet setWithObjects:car1,car2,@"abc", nil];
//得到set元素個數
NSUInteger count = set3.count;
[set3 count];
NSLog(@"%ld",count);
//打印set (打印出來的元素順序不固定)
NSLog(@"%@",set3);
//獲取set中全部的元素 返回值是NSArray
NSArray *ary = [set3 allObjects];
//取set中的一個元素 沒有順序,任意取出一個元素
[set3 anyObject];
//判斷集合中是否包含某個對象
[set3 containsObject:@"abc"];//返回BOOL型
if([set3 containsObject:@"abc"])
{
NSLog(@"set 中有該對象");
}
else
{
NSLog(@"set 中不包含該對象");
}
[set3 member:@"abc"];//返回BOOL型
if([set3 member:@"abc"])
{
NSLog(@"set 中有該對象");
}
else
{
NSLog(@"set 中不包含該對象");
}
//==========================================================
// NSMutableSet 可變集合
//初始化可變集合
NSMutableSet *set4 = [NSMutableSet set];
//添加元素
[set4 addObject:[Car new]];
//把一個數組中的元素添加到當前set
NSArray *ary2 = @[@"jereh",@"ios"];
[set4 addObjectsFromArray:ary2];
NSLog(@"%@",set4);
//刪除。由於沒有順序,所以不能按照索引位置刪除確定的對象
//刪除一個元素
[set4 removeObject:@"ios"];
//刪除全部元素
[set4 removeAllObjects];
//遍歷set(用快速遍歷)
NSMutableSet *set5 = [NSMutableSet setWithObjects:@"a",@"b",@"c",@"d", nil];
NSArray *ary3 = @[@"jere"];
[set5 addObjectsFromArray:ary2];
[set5 addObjectsFromArray:ary3];
for (id obj in set5) {
NSLog(@"%@",obj);
}
//將一個集合的所有元素添加到當前集合
NSLog(@"%@",set4);
NSLog(@"%@",set5);
NSMutableSet *set6 = [NSMutableSet setWithObject:@"I love you."];
[set6 unionSet:set5];
NSLog(@"%@",set6);
//判斷兩個集合是否相等
if ([set5 isEqualToSet:set6] == YES) {
NSLog(@"兩個集合相等");
}
else
{
NSLog(@"兩個集合不相等");
}
//判斷兩個集合的交集是否存在至少一個元素
[set6 intersectsSet:set5]; //BOOL
[set6 intersectSet:set5]; //void
if ([set6 intersectsSet:set5] == YES) {
NSLog(@"兩個集合有交集 ");
}
else
{
NSLog(@"兩個集合沒有交集");
}