OC-045.NSSet类和NSMutableSet类

本文介绍了NSSet和NSMutableSet类的基本特性。NSSet作为一个无序且不允许重复元素的集合,其执行效率优于NSArray。NSMutableSet则允许元素的增删操作,但不支持修改已有元素。内容包括NSSet的创建、初始化以及常用方法的使用。
摘要由CSDN通过智能技术生成

NSSet是一个集合类,是储存对象的数组。

NSSet的特征:

1.内部的元素是无序的

2.元素不可以重复,会自动去重

3.执行的效率比NSArray高


NSMutableSet的特征:

1.可以增删,没有改


以下代码中介绍:

1.创建和初始化

2.它们的一些基本方法


1.NSSet创建和初始化

//1.1类方法创建,以nil结尾,表示数组结束,NSSet类会自动取出重复对象
        NSSet *set1 = [NSSet setWithObjects:@1,@2,@3,@4,@1,@2, nil];
        NSLog(@"%@",set1);//打印3,2,1,4 证明数组内部是无需的集合
        NSLog(@"%zd",set1.count);//打印4 说明去掉重复的@1、@2
        //1.2对象方法创建,以nil结尾,表示数组结束
        NSSet *set2 = [[NSSet alloc] initWithObjects:@1,@2,@3,@4, nil];
        NSLog(@"%@",set2);//打印3,2,1,4 证明数组内部是无需的集合
        //1.3不能通过字面量创建,字面量创建只能只用于NSArray(错误的)
//        NSSet *set3 = @[@1,@2,@3,@4];
//        NSLog(@"%@",set3);

2.NSSet的方法

//******2.NSSet的方法
        //2.1NSSet不再能通过索引的方式读取元素,因为它是无序的读取对象
//        NSLog(@"%@",set1[1]);   错误的方法
        //2.2判断是否包含某个元素
        BOOL isHas = [set1 containsObject:@2];
        if (isHas) {
            NSLog(@"包含@2");
        }
        //2.3给数组去掉重复元素
        //2.3.1创建一个有重复的数组
        NSArray *array = @[@1,@2,@3,@4,@1,@2];
        NSLog(@"%@",array);//打印 1,2,3,4,1,2
        //2.3.2通过数组创建NSSet,自动去重
        NSSet *set3 = [NSSet setWithArray:array];
        NSLog(@"%@",set3);//打印3,2,1,4
        //2.3.3通过set3赋值给array
        array = [set3 allObjects];
        NSLog(@"%@",array);//打印3,2,1,4

3.遍历数组

//******3.遍历NSSet的方法
        //3.1使用增强for
        for (NSNumber *num in set3) {
            NSLog(@"%@",num);
        }
        //3.2使用block遍历
        [set3 enumerateObjectsUsingBlock:^(id  _Nonnull obj, BOOL * _Nonnull stop) {
            NSLog(@"%@",obj);
        }];
        //3.3使用枚举器
        NSEnumerator *setEnum = [set3 objectEnumerator];
        NSNumber *num = [[NSNumber alloc] init];
        while (num = [setEnum nextObject]) {
            NSLog(@"%@",num);
        }



NSMutableSet类的创建

//******1.NSMutableSet创建和初始化
        //1.1创建
        NSMutableSet *setM1 = [NSMutableSet set];//创建一个可变setM1
        NSMutableSet *setM2 = [NSMutableSet setWithCapacity:10];//创建10个元素的setM2
        //1.2初始化
//        setM2.set = @[@1,@2,@3,@4,@1,@2]; 不能这样去初始化
        NSSet *set = [NSSet setWithObjects:@1,@2,@3,@4, nil];
        setM2.set = set;
        NSLog(@"%@",setM2);

NSMutableSet的常用方法

//******2.常用方法
        //2.1增加元素
        [setM2 addObject:@5];
        NSLog(@"%@",setM2);//打印5,1,2,3,4
        //2.2删除元素
        [setM2 removeObject:@4];
        NSLog(@"%@",setM2);//打印5,1,2,3
        //2.3删除所有元素
        [setM2 removeAllObjects];
        NSLog(@"%@",setM2);//打印


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值