NSSet和NSMutableSet基本用法

一、概念

名称为集合,存放着不可重复对象的集合,集合中对象是无序的。

二、NSSet基本用法

// 初始化集合的几种方式
NSSet* setArray = [NSSet setWithArray:@[@"mm", @"jj", @"zz"]];
NSSet* setObject = [NSSet setWithObject:@"hello"];
NSSet* setObjects = [NSSet setWithObjects:@"hello", @"world", @"jj", nil];
NSSet* setSets = [NSSet setWithSet:setArray];
    
// 在原有的基础上拼接生成新的NSSet
NSSet* setAddObj = [setArray setByAddingObject:@"love"];
NSSet* setAddSet = [setObject setByAddingObjectsFromSet:setObjects];
NSSet* setAddArray = [setSets setByAddingObjectsFromArray:@[@"tt", @"yy", @"ss"]];
    
// 容器中值打印
for (id obj in setArray.objectEnumerator.allObjects) {
    NSLog(@"当前对象:%@", obj);
}

BOOL isContain = [setArray containsObject:@"mm"]; // setArray中是否包含对象: "mm"
BOOL isEqual = [setObjects isEqualToSet:setArray]; // 两集合是否相等
BOOL isSubset = [setArray isSubsetOfSet:setObjects]; // setObjects是否是setArray子集合, 子集合setObjects中不仅值要相等,而且个数还要小于或等于前一个集合(setArray)数量
BOOL isIntersects = [setArray intersectsSet:setObjects]; // 返回YES:集合setObjects中至少含有setArray中一个对象

三、NSMutableSet用法

//NSMutableSet初始化集合的其它方式
NSMutableSet* setArray = [[NSMutableSet alloc] initWithArray:@[@"mm", @"jj", @"zz"]];
NSMutableSet* setObjects = [[NSMutableSet alloc] initWithObjects:@"hello", @"world", @"jj", nil];
NSMutableSet* setSets = [NSMutableSet setWithSet:setArray];

[setArray addObjectsFromArray:@[@"11", @"ss", @"jj", @"mm", @"zz"]]; // 添加对象
NSLog(@"%@", setArray);
    
NSMutableSet* setCapacity = [NSMutableSet setWithCapacity:2]; // 预估数量
[setCapacity addObject:@"11"]; // 添加对象
[setCapacity addObject:@"mm"]; // 添加对象
NSLog(@"%@", setCapacity);

/** 调试时可注释部分代码  **/
[setArray intersectSet:setCapacity]; // 生成两集合的交集
NSLog(@"%@", setArray);

[setArray unionSet:setCapacity]; // 生成两集合的并集
NSLog(@"%@", setArray);

[setArray minusSet:setCapacity]; // 生成去除和setCapacity重复元素后的集合
NSLog(@"%@", setArray);

[setArray removeAllObjects]; // 删除所有对象
NSLog(@"%@", setArray);

以上是对常用方法的说明,如有错误,望指正,多谢!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值