Foundation框架中的动态集合

看官们,我们在前面章回中介绍了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.以上所有的操作都会修改原来集合中的内容,而不是返回一个新的集合;


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

Guess you like

Origin blog.csdn.net/talk_8/article/details/119393980