oc学习之Foundation框架--NSSet类

本文详细介绍了Objective-C中的NSSet集合类,包括NSSet和NSMutableSet的特点与使用方法,并对比了NSSet与NSArray的不同之处。同时,还介绍了如何创建、添加、删除元素及遍历NSSet。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

接下来要总结的是oc中的集合类(NSArrayNSDictionary以及NSSet)中的NSSet:

它也有两种:NSSet(不可变的集合)NSMutableSet(可变的集合),其中NSSetNSMutableSet的父类。


NSArrayNSSet的区别:

NSArray:有序的集合,里面可以存在重复的元素。

NSSet:无序的集合,里面的元素不能重复,相同的元素只保留一     个。只能存储oc对象。


//NSSet

//创建

  NSSet *set1 = [NSSet setWithObjects:@"oc", @"c", @21, @"c", nil];

        

  NSArray *ary1 = @[@"ii",@"oo",@"ii",@(34)];

  NSSet *set2 = [NSSet setWithArray:ary1]; //将数组元素存到set中,相当于去重复


//获取set中的元素,因为set没有顺序,所以随机获取

  id obj = [set2 anyObject];


//遍历集合

        for (id obj in set2) {

            NSLog(@"%@",obj);

        }

        

//获取集合中全部元素

  NSArray *ary2 = set1.allObjects;


//判断集合中是否包含某个元素

        if ([set1 containsObject:@"ios"]) {

            NSLog(@"包含!");

        }else{

            NSLog(@"不包含!");

        }

//NSMutableSet

//创建

  NSMutableSet *muSet1 = [NSMutableSet set];

  

  NSMutableSet *muSet2 =  [NSMutableSet setWithObjects:@"12", @"asd", @(12), nil];


//添加元素

  //添加单个元素

        [muSet1 addObject:@"qq"];

  //添加多个元素

        [muSet1 addObjectsFromArray:ary1];


//删除元素

  //删除单个元素

        [muSet1 removeObject:@"qq"];


  //删除所有元素

        [muSet1 removeAllObjects];


在这里再介绍一个有序的集合:

NSOrderedSet 有序的集合。没有重复的元素。

             元素的位置和添加的位置保持一致。不可变的集合类。

NSMutableOrderedSet 有序,不重复,可变的集合类。(因为都很类似,这里就不介绍了)


//直接给多个元素

  NSOrderedSet *orSet1 = [NSOrderedSet orderedSetWithObjects:@"123", @"asj", @(89), @(123), nil];


//还可以根据数组赋值

  NSOrderedSet *orSet2 = [NSOrderedSet orderedSetWithArray:ary1];


//获取第一个元素

[orSet1 firstObject]

//获取最后一个元素

[orSet1 lastObject]

//根据索引获取元素

[orSet1 objectAtIndex:1]或者直接可以写orSet1[1]


//根据元素获取索引

  NSUInteger index = [orSet1 indexOfObject:@"asj"];

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值