Foundation框架中的动态集合

本文深入介绍了Foundation框架中的动态集合,包括NSMutableSet的使用,如添加、删除元素及集合的复合操作(并集、交集、差集)。通过代码示例展示了具体的操作过程,帮助读者理解并掌握动态集合的运用。

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

看官们,我们在前面章回中介绍了Foundation框架中的静态集合,本章回中将介绍Foundation框架中的动态集合。


动态集合使用NSMutableSet类来表示,它是NSSet的子类,因此我们在上在章回中介绍过的相关内容也适用于动态集合,因为NSMutableSet类从父类NSSet继承了这些方法,此外它还有一些自己特有的方法:向集合中添加元素,删除集合中的元素以及集合复合操作。接下来我们依次做介绍这些方法。


向集合中添加元素


使用addObject:方法可以把参数中的对象添加到集合中,不过不能添加与集合元素相同的对象到集合中;


删除集合中的元素


使用removeObject:方法可以删除集合中的某个对象,被删除的对象通过该方法的参数来指定;
使用removeAllObjects方法可以删除集合中所有的元素,相当于清空集合;


以上操作都是针对单个集合进行的,下面介绍一下集合的复合操作,也就对两个集合进行操作:

setSet:        //重置集合中的所有元素,相当于把集合中的所有元素替换为参数指定集合中的所有元素;
unionSet:      //求两个集合的并集
intersectSet:  //求两个集合的交集
minusSet:      //求两个集合的差集


看官们,上面我们一直在介绍理论方面的知识,接下来我们介绍通过代码演示集合相关的操作。下面是具体的代码:

#import <Foundation/Foundation.h>

int main()
{
	NSMutableSet *set1 = [NSMutableSet setWithObjects:@"aa",@"bb",nil];
	NSMutableSet *set2 = [NSMutableSet setWithObjects:@"bb",@"cc",nil];
	NSMutableSet *set3 = [NSMutableSet setWithObjects:@"aa",@"bb",nil];

	NSLog(@" %@",set1);
	NSLog(@" %@",set2);

	//向集合中添加元素
	[set1 addObject:@"cc"];
	NSLog(@"after add 'cc' in set: %@",set1);

	//删除集合中某个元素
	[set1 removeObject:@"cc"];
	NSLog(@"after remove 'cc' in set: %@",set1);

	//删除集合中所有的元素
	[set1 removeAllObjects];
	NSLog(@"after remove all items of set: %@",set1);

	//求并集
	[set1 setSet:set3];
	[set1 unionSet: set2];
	NSLog(@"union sets: %@",set1);

	//求交集
	[set1 setSet:set3];
	[set1 intersectSet: set2];
	NSLog(@"intersect sets: %@",set1);

	//求差集
	[set1 setSet:set3];
	[set1 minusSet: set2];
	NSLog(@"minus sets: %@",set1);


	return 0;
}


在代码中我们添加了相关的注释,以方便大家理解代码。程序中集合的元素比较少,大家可以直接判断出运行结果,因此我们就不展示程序运行结果了,不过大家一定要自己动手是运行程序,一边分析代码,一边对比程序运行结果是否符合代码分析的结果。


最后我们对本章回的内容做一个总结:

  • 1.动态集合是静态集合的子集,因此它可以使用静态集合的所有操作;
  • 2.使用addObject:方法向集合中添加元素,注意不能添加相同的元素到集合中;
  • 3.使用removeObject:方法删除集合中某个元素;
  • 4.使用removeAllObjects方法可以删除集合中所有的元素;
  • 5.集合可以进行复合操作,主要包括:重置集合,求并集、求交集和求差集;
  • 6.以上所有的操作都会修改原来集合中的内容,而不是返回一个新的集合;


看官们,本章回的内容就介绍到这里,欲知后事如何且听下回分解!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

talk_8

真诚赞赏,手有余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值