ObjectiveC(5)_NSSet和NSMutableSet

版权声明:本博客主要记录学习笔记和遇到的一些问题解决方案,转载请注明出处! https://blog.csdn.net/u010982507/article/details/82828274

NSSet定义

Foundation框架中,提供了NSSet类,它是一组单值对象的集合。有以下特性:

  • NSSet实例中的元素是无序的,
  • 同一个对象只能保存一个,无重复对象
  • 分为可变和不可变的集合对象

NSSet初始化

  • 创建一个NSSet实例并初始化
NSSet *set1 = [[NSSet alloc] initWithObjects:@"one",@"two", nil];// 实例方法
NSSet *set1s = [NSSet setWithObjects:@"three", nil];// 类方法
NSLog(@"NSSet的初始化:%@\r\n%@",set1,set1s);
  • 通过数组创建集合
NSArray *arr = [NSArray arrayWithObjects:@"fore", nil];
NSSet *set2 = [[NSSet alloc] initWithArray:arr];
NSSet *set3 = [NSSet setWithArray:arr];
NSLog(@"通过数组创建集合:%@\r\n%@",set2,set3);
  • 通过另一个集合来初始化集合
NSSet *set4 = [[NSSet alloc]initWithSet:set1];
NSSet *set5 = [NSSet setWithSet:set1];
NSLog(@"通过另一个集合来初始化集合:%@\r\n%@",set4,set5);

NSSet常用方法

  • 获取集合的长度
NSInteger count = [set4 count];
NSLog(@"获取集合的长度:%ld",count);
  • 数组的形式返回集合中的所有对象
NSArray *arrSet = [set4 allObjects];
NSLog(@"以数组的形式返回集合中的所有对象:%@",arrSet);
  • 返回集合中的任意一个对象
id obj = [set4 anyObject];
NSLog(@"返回集合中的任意一个对象:%@",obj);
  • 判断集合中是否包含值为one的的字符串对象
BOOL flag = [set4 containsObject:@"one"];
if (flag) {
    NSLog(@"包含");
}
  • 判断两个集合是否有交集
flag = [set1 intersectsSet:set4];
if (flag) {
    NSLog(@"有交集");
}
  • 判断两个集合中的元素是否完全匹配
flag = [set1s isEqualToSet:set4];
if (!flag) {
    NSLog(@"不匹配");
}
  • 判断两个前面集合是否是后面集合的子集合
flag = [set1 isSubsetOfSet:set4];
if (flag) {
   	NSLog(@"set1是set4的子集");
} 
  • 在一个set集合上新增元素并返回新的集合
NSSet *set6 = [NSSet setWithObject:@"one"];
NSSet *set7 = [set6 setByAddingObject:@"two"];
NSLog(@"在一个set集合上新增元素并返回新的集合:%@",set7);
  • 通过一个已有的集合创建新的集合
NSSet *set8 = [set6 setByAddingObjectsFromSet:set5];
NSLog(@"通过一个已有的集合创建新的集合:%@",set8);
  • 通过已有的数组和集合创建新的集合
NSArray *setArrs = [NSArray arrayWithObjects:@"v1",@"v2",@"v3", nil];
NSSet *set9 = [NSSet setWithObjects:@"one", nil];
NSSet *set10 = [set9 setByAddingObjectsFromArray:setArrs];
NSLog(@"通过已有的数组和集合创建新的集合:%@",set10);

NSMutableSet常用方法

  • 创建一个可变的空集合
NSMutableSet *muSet1 = [NSMutableSet set];
NSMutableSet *muSet2 = [NSMutableSet setWithObjects:@"a",@"1",@"x", nil];
NSMutableSet *muSet3 = [NSMutableSet setWithObjects:@"b",@"1",@"y", nil];
  • 减去一个集合
[muSet3 minusSet:muSet2];
NSLog(@"减去一个集合:%@",muSet3);
  • 获取两个集合的交集
[muSet3 intersectSet:muSet2];
NSLog(@"获取两个集合的交集:%@",muSet3);
  • 获取两个集合的并集
[muSet3 unionSet:muSet2];
NSLog(@"获取两个集合的并集:%@",muSet3);
  • 给空集合赋值一个集合
[muSet1 setSet:muSet3];
NSLog(@"给空集合赋值一个集合:%@",muSet1);
  • 根据内容删除集合中的对象
[muSet3 removeObject:@"a"];
NSLog(@"根据内容删除集合中的对象:%@",muSet3);
  • 删除所有的对象
[muSet3 removeAllObjects];
NSLog(@"删除所有的对象:%@",muSet3);

猜你喜欢

转载自blog.csdn.net/u010982507/article/details/82828274