接下来要总结的是oc中的集合类(NSArray,NSDictionary以及NSSet)中的NSSet:
它也有两种:NSSet(不可变的集合)和NSMutableSet(可变的集合),其中NSSet是NSMutableSet的父类。
NSArray和NSSet的区别:
NSArray:有序的集合,里面可以存在重复的元素。
NSSet:无序的集合,里面的元素不能重复,相同的元素只保留一 个。只能存储oc对象。
//NSSet
//创建
NSSet *set1 = [NSSet setWithObjects:@"oc", @"c", @21, @"c", nil];
NSArray *ary1 = @[@"ii",@"oo",@"ii",@(34)];
NSSet *set2 = [NSSet setWithArray:ary1]; //将数组元素存到set中,相当于去重复
//获取set中的元素,因为set没有顺序,所以随机获取
id obj = [set2 anyObject];
//遍历集合
for (id obj in set2) {
NSLog(@"%@",obj);
}
//获取集合中全部元素
NSArray *ary2 = set1.allObjects;
//判断集合中是否包含某个元素
if ([set1 containsObject:@"ios"]) {
NSLog(@"包含!");
}else{
NSLog(@"不包含!");
}
//NSMutableSet
//创建
NSMutableSet *muSet1 = [NSMutableSet set];
NSMutableSet *muSet2 = [NSMutableSet setWithObjects:@"12", @"asd", @(12), nil];
//添加元素
//添加单个元素
[muSet1 addObject:@"qq"];
//添加多个元素
[muSet1 addObjectsFromArray:ary1];
//删除元素
//删除单个元素
[muSet1 removeObject:@"qq"];
//删除所有元素
[muSet1 removeAllObjects];
在这里再介绍一个有序的集合:
NSOrderedSet 有序的集合。没有重复的元素。
元素的位置和添加的位置保持一致。不可变的集合类。
NSMutableOrderedSet 有序,不重复,可变的集合类。(因为都很类似,这里就不介绍了)
//直接给多个元素
NSOrderedSet *orSet1 = [NSOrderedSet orderedSetWithObjects:@"123", @"asj", @(89), @(123), nil];
//还可以根据数组赋值
NSOrderedSet *orSet2 = [NSOrderedSet orderedSetWithArray:ary1];
//获取第一个元素
[orSet1 firstObject]
//获取最后一个元素
[orSet1 lastObject]
//根据索引获取元素
[orSet1 objectAtIndex:1]或者直接可以写orSet1[1]
//根据元素获取索引
NSUInteger index = [orSet1 indexOfObject:@"asj"];