OC中的NSSet和NSMutableSet

学习链接: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;
}

 

posted @ 2020-10-16 10:13  执||念  阅读(204)  评论(0编辑  收藏  举报