整理NSSet集合

    (1) 初始化NSSet集合

NSNumber *num=[NSNumber numberWithInteger:2345];
NSSet *set=[NSSet setWithObjects:@"abc",@"efg", num,nil];

    因为NSSet集合只能存储对象类型,如果要存储int,char,double 等基础类型,必须将这些转化为对象类型才能存储到NSSet集合中。第一行代码将数字转化为NSNumber数字对象。

    使用setWithObjects 来初始化一个NSSet集合,同样和NSArray一样,需要使用nil来标识集合的结束。

    (2) 使用count获取NSSet集合的长度

NSNumber *num=[NSNumber numberWithInteger:2345];
        NSSet *set=[NSSet setWithObjects:@"abc",@"efg", num,nil];
        NSLog(@"%d",[set count]);

    上面的代码输出结果为3,说明集合set中包含三个元素,注意最后的nil不包含在其中。同时NSSet可以同时存储不同类型的对象,上面的代码中就包含了NSString和NSNumber两种类型对象。

    (3) 使用containObject判断是否包含某个元素

NSNumber *num1=[NSNumber numberWithInteger:23];
bool flag=[set containsObject:num1];
NSLog(@"%i",flag);

    这段代码中重新声明了一个对象num1,containObject方法用于判断NSSet中是否包含特定的对象,返回值为bool。如果使用如上代码则则返回为NO,输出为0

     (4) 使用objectEnumerator将集合转化为迭代器

复制代码
NSEnumerator *enumr=[set objectEnumerator];
        NSObject *item=[enumr nextObject];
        while(item!=nil){
            NSLog(@"%@",item);
            item=[enumr nextObject];
        }
        
        for(NSObject *obj in set){
            NSLog(@"%@",obj);
        }
复制代码

    使用set调用objectEnumerator方法只会,就将集合转化为NSEnumerator类,而NSEnumerator类有一个很重要的方法nextObject,用于获取迭代器的下一个元素。直到迭代到最后一个元素。

    (5) 元素的比较

复制代码
//比较两个集合
        NSSet *setItems1=[NSSet setWithObjects:@"123", @"234", @"456",nil];
        NSSet *setItem2=[NSSet setWithObjects:@"123",@"234", nil];
        NSSet *setItem3=[NSSet setWithObjects:@"123",@"234", @"456",nil];
        
        bool flag1=[setItems1 isEqualToSet:setItem2];
        bool flag2=[setItems1 isEqualToSet:setItem3];
        NSLog(@"flag1=%i",flag1);
        NSLog(@"flag2=%i",flag2);
        
        bool flag3=[setItem2 isSubsetOfSet:setItems1];
        NSLog(@"flag3=%i",flag3);
        
        bool flag5=[setItems1 isSubsetOfSet:setItem2];
        NSLog(@"flag5=%i",flag5);
        
        bool flag4=[setItem2 intersectsSet:setItem3];
        NSLog(@"flag4=%i",flag4);
复制代码

    使用方法isEqualToSet用于判断两个集合元素是否一样,返回bool值。

    - (BOOL)isSubsetOfSet:(NSSet *)otherSet; 判断前者集合是不是后者的子集。在上面的例子中可以看到两个集合调用的主从关系,这里是有区别的。

    - (BOOL)intersectsSet:(NSSet *)otherSet;判断两个集合是否有交集,也就是两个集合是否有相同的元素。

 

  二. NSMutableSet动态集合

    NSMutableSet和之前的NSMutableArray数组一样,是可以动态添加和删除元素的。NSMutableSet是NSSet的一个子类。

    (1) setWithCapacity用于初始化NSMutableSet的容量,这里要注意容量并不等于存储的元素数量

NSMutableSet *muSet=[NSMutableSet setWithCapacity:10];

    以上代码就是初始化了一个容量为10的NSMutableSet集合,当往NSMutableSet中添加新的元素对象时候,如果数量超过10不会数组越界,因为NSMutableSet是当存储满之后容量自动扩充。

    (2) 往集合中添加对象元素

集合NSMutableSet中添加元素

    addObject 方法用于往NSMutableSet集合中添加元素,每次只能添加一个元素。

    而addObjectsFromArray方法则用于将一个数组添加到NSMutableSet集合中

    (3) 删除集合中的元素

复制代码
[muSet removeObject:[NSNumber numberWithInt:2]];
        for(NSNumber *item in muSet){
            NSLog(@"-----^%d",item);
        }
        [muSet removeAllObjects];
        int leng=[muSet count];
        NSLog(@"00000-%d",leng);
复制代码

    使用removeObject方法用于删除NSMutableSet集合中的元素,在以上代码中删除一个值为2的NSNumber对象。

    而使用removeAllObjects方法则用于删除NSNutableSet中的所有的元素,最后一行代码输出的结果0。

    (4)其他方法介绍

    - (void)unionSet:(NSSet *)other;用于向集合中添加另外一个集合的所有元素

    - (void)minusSet:(NSSet *)other;用于删除other中包含的元素

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值