学习链接:https://www.cnblogs.com/QianChia/p/5782709.html
自己只写一部分,还剩下的以后再看吧
// // learn_set.m // learn_KVC // // Created by 蔡佳明 on 2020/10/15. // #import <Foundation/Foundation.h> int main() { //set就是一种集合 无无序集合 //有两种set 一种是不可变的NSSet 一种是可变的Set NSMutableSet //先看不可变的 //对象方法创建 NSSet *set1 = [[NSSet alloc] init]; //创建一个与set1地址相同的 NSSet *set2 = [[NSSet alloc] initWithSet:set1]; //创建有几个元素的set NSSet *set3 = [[NSSet alloc] initWithObjects:@"55","23", nil]; //通过数组创建 NSSet *set4 =[[NSSet alloc] initWithArray:@[@"55",@"23"]]; //类方法创建 NSSet *set5 = [NSSet set]; //地址相同的set NSSet *set6 = [NSSet setWithSet:set1]; NSSet *set7 = [NSSet setWithObject:@8]; NSSet *set8 = [NSSet setWithObjects:@55, @23, @3, @8, nil]; NSSet *set9 = [NSSet setWithArray:@[@55, @23, @3, @8, @21, @33, @18]]; // 已有对象创建 NSSet *set10 = [set1 setByAddingObject:@8]; NSSet *set11 = [set1 setByAddingObjectsFromSet:set9]; NSSet *set12 = [set1 setByAddingObjectsFromArray:@[@55, @23, @3, @8, @21, @33,@18]]; //计算成员个数 NSUInteger length = [set1 count]; //获取集合中任意元素 id anyObject = [set1 anyObject]; //判断集合是否包含哪个元素 BOOL containsObject = [set1 containsObject:@"23"]; // 判断是否包含哪个元素 包含返回1 不包含返回null id number = [set1 member:@"23"]; //判断两个集合是否相等 BOOL isEqualToSet = [set1 isEqualToSet:set2]; //是否是另一个集合的子集 BOOL isSubsetOfSet = [set1 isSubsetOfSet:set2]; //一个集合和另一个集合是否有交集 BOOL intersectsSet = [set1 intersectsSet:set2]; ///下面说一下可变集合的一些操作 //创建 NSMutableSet *setM1 = [[NSMutableSet alloc] initWithCapacity:0]; // 类方法创建 NSMutableSet *setM2 = [NSMutableSet setWithCapacity:0]; //集合元素的添加 [setM1 addObject:@8]; //通过数组进行添加 [setM1 addObjectsFromArray:@[@1,@2]]; //集合元素的删除 //删除指定元素 [setM1 removeObject:@1]; //删除两个集合的交集 [setM1 minusSet:set1]; //删除所有元素 [setM1 removeAllObjects]; //集合元素的修改 //重新覆盖原来集合 [setM1 setSet:[NSSet setWithObjects:@1,@2, nil] ]; //集合的交集 [setM1 intersectsSet:setM2]; //交集保存在setM1中 //集合的并集 [setM1 unionSet:setM2]; //集合的遍历 //迭代遍历 NSEnumerator *enu = [setM1 objectEnumerator]; id obj = nil; while(obj = [enu nextObject]) { NSLog(@"%@",obj); } //集合的条件遍历 set1 = [set2 objectsPassingTest:^BOOL(id _Nonnull obj, BOOL * _Nonnull stop) { return [obj intValue] >10 ? : NO; }]; return 0; }