六十二、基础框架(二十)集合物件

来源:互联网 发布:linux 系统添加wifi 编辑:程序博客网 时间:2024/05/22 04:26

集合  是  由若干独一无二的物件  构成的。集合  可以是  可修改的,也可以是  不可修改的。我们  可以  在集合当中  搜索  某个物件、添加  或者  去除  某个物件,我们  还可以比较  两个集合,求  两个集合的交集  或者  并集。

如果  要  在程序当中  使用  集合这类物件,那么  程序中  需要加入  下面这行语句:

接下来的程序  示范了  关于集合的一些基本操作。如果  你  想要  在程序执行的过程当中 多次  显示  集合的内容,那么  就需要编写  一项新的适用于NSSet这类物件的措施,叫做  print。我们  可以通过创建一个新的类别  来添加  print这项措施。

运行  这个程序  可以得到  这样的结果:

程序中的

这行语句  将  [NSNumber numberWithInteger:v]  命名为  INTEGER_OBJECT(v)。而  [NSNumber numberWithInteger:v]的作用  是  向NSNumber这类物件  发送  numberWithInteger:这条消息  从而  NSNumber这类物件  创建出  一个值为v的整数物件。所以  INTEGER_OBJECT(v)的作用  也就是  创建  一个值为v的整数物件。像  这样  给  某些语句  命名,可以少打  不少字。

这几行语句  给  NSSet这类物件  创建  一个新的类别Printing。Printing这个新的类别当中  包含了  print这项措施,当然  print这项措施  是  适用于NSSet这类物件的。

在print这项措施的实施细则中  利用了  快速枚举的技巧  将  实施对象中的成员  一一  读取  到变量element当中,并且  调用  printf()函数  一一  显示出来。需要注意的  是  print这项措施  只能显示  成员为整数的集合。

向NSSet  或者  NSMutableSet这两类物件  发送  setWithObjects:这条消息  可以创建出  以这条消息的参数为成员的集合。

创建了  三个集合过后,我  对  前两个集合  采取了  print这项措施,将  他们的成员  显示出来。

isEqualToSet:这项措施  用来检查  其实施对象所代表的集合  与  其参数代表的集合所包含的成员  是否一致。

containsObject:这项措施  用来检查  其实施对象所代表的集合当中  是否包含  其参数所代表的成员。

接下来  程序当中  对  集合setOne  分别  采取了  addObject:  和  removeObject:这两项措施。addObject:这项措施  会将其参数所代表的物件  添加到  其实施对象所代表的集合当中。而  removeObject:这项措施  会从其实施对象所代表的集合当中  将  其参数所代表的成员  去除。

接着  在程序当中  我  对  集合setOne  采取了  intersectSet:这项措施,参数  为  集合setTwo。intersectSet:这项措施  会计算出  集合setOne  和  集合setTwo的交集,也就是  找出  这两个集合中  哪些成员  是  都有的。intersectSet:这项措施  会用  两个集合的交集 来覆盖  其实施对象,也就是  集合setOne。

再然后  我  对  集合setOne  采取了  unionSet:这项措施,参数  为  集合setTwo。intersectSet:这项措施  会计算出  集合setOne  和  集合setTwo的并集,也可以叫做  联集。也就是  找出  这两个集合的所有成员。不熟悉的  可以  在网上查找一下  并集的概念。与  intersectSet:这项措施  一样,unionSet:这项措施  也会用  两个集合的并集  来覆盖  其实施对象,也就是说  集合setOne  是  最后的结果。

在基础框架当中  还有  一类集合物件  叫做  NSCountedSet。NSCountedSet这类物件所代表的集合中  允许出现  相同的成员。当某个物件  第一次  添加  到这样的集合中时,集合  就增加了  一个成员。当同样的物件  再次  添加  到这样的集合当中时,集合  就再次增加  一个成员。countForObject:这项措施  可以计算出  其参数所代表的成员  在集合中  出现的次数。

下面表格里的措施  适用于  NSSet这类物件:

 

措施名称描述+(id)setWithObjects:物件1,物件2,……,nil创建一个新的集合。新创建的集合包含了参数中列举的物件-(id)initWithObject:物件1,物件2,……,nil对已经分配了内存空间的集合进行初始化,并且将参数中的物件添加到集合当中-(NSUInteger)count计算出集合中成员的数量-(BOOL)containObject:物件判断其实施对象中是否包含某个成员-(BOOL)member:物件判断其实施对象中是否包含某个成员-(NSEnumerator *)objectEnumerator:为其实施对象中的成员生成一个NSEnumerator类型的物件-(BOOL)isSubsetOfSet:nsset判断其实施对象中的成员是否在nsset这个集合中出现-(BOOL)intersectsSet:nsset判断其实施对象与nsset是否存在交集-(BOOL)isEqualToSet:nsset判断其实施对象与nsset中的成员是否一致

下面表格中的措施  适用于  NSMutableSet这类物件

 

措施名称描述+(id)setWithCapacity:size创建容量为size的集合-(id)initWithCapacity:size将已经分配了内存空间的集合的容量设定为size-(void)addObject:物件将物件添加到其实施对象所代表的集合当中-(void)removeObject:物件从其实施对象所代表的集合当中将物件删除-(void)removeAllObjects将其实施对象中的所有成员删除-(void)unionSet:nsset求其实施对象与参数的并集-(void)minusSet:nsset求其实施对象与参数的差集-(void)intersectSet:nsset求其实施对象与参数的交集
原创粉丝点击