NSSet与NSMutableSet等集合类

来源:互联网 发布:淘宝卖家自动屏蔽买家 编辑:程序博客网 时间:2024/06/05 06:25

NSSet与NSMutableSet等集合类

NSSet集合类似于一个罐子,一旦对象存进去,集合里的对象没有顺序。与NSArray相比,NSSet集合不允许包含相同的元素,如果试图把两个相同的元素放入同一个NSSet集合中,则只会保留一个元素。另外,NSSet元素没有索引,但是具备很好的存取和查找性能。
下面的示例给出了NSSet集合的基本用法

#import <Foundation/Foundation.h>


int main(int argc,constchar * argv[]) {

    @autoreleasepool {

        //用四个元素初始化NSSet集合

        //故意传入两个相同的元素,只保留一个

       NSSet *set1=[NSSetsetWithObjects:@"1",@"2",@"3",@"3",nil];

        //集合中元素个数为3

        [set1count];

        //快速遍历set1集合

       for (NSString *ain set1) {

           NSLog(@"%@",a);

        }

       NSSet *set2=[NSSetsetWithObjects:@"4",@"5",nil];

        //set1中添加单个元素,并将生成的新集合赋给set1

        set1=[set1setByAddingObject:@"0"];

        //求两个集合的并集

       NSSet *s=[set1setByAddingObjectsFromSet:set2];

        //判断两个集合是否有交集

       BOOL b=[set1intersectsSet:set2];

        //判断set1是否是set2的子集

       BOOL c=[set1isSubsetOfSet:set2];

        //判断set1是否包括某一元素

       BOOL d=[set1containsObject:@"6"];

        //下面两行代码取出相同的元素,但取出哪个元素是不确定的

        [set1anyObject];

        [set1anyObject];

    }

   return0;

}

NSMutableSet集合是NSSet的子类,它代表一个集合元素可变的集合
下面示例示范了NSMytableSet集合的用法:


#import <Foundation/Foundation.h>


int main(int argc,constchar * argv[]) {

    @autoreleasepool {

        //创建一个初始量为10的集合

        NSMutableSet *set=[NSMutableSetsetWithCapacity:10];

        [setaddObject:@"1"];

        [set removeAllObjects];

        [setaddObject:@"2"];

       NSSet *s=[NSSetsetWithObjects:@"1",@"2",nil];

        //计算两个集合的并集,直接改变set集合

        [setunionSet:s];

        //计算两个集合的差集,直接改变set集合

        [setminusSet:s];

        //计算两个集合的交集

        [setintersectSet:s];

        //s的所有元素代替set的所有元素,直接改变set集合

        [setsetSet:s];

    }

   return0;

}

NSCountedSet是NSMutable的子类,NSCountedSet扩展了一个方法,该方法为每个元素额外维护一个添加次数的状态。当程序向NSCountedSet添加一个元素时,如果NSCountedSet集合中不包含该元素,NSCountedSet真正接纳该元素,并将该元素的添加次数标注为一;如果NSCountedSet集合中包含该元素,NSCountedSet不接纳该元素,但将该元素的添加次数加一。删除某一元素时,只有当该元素的添加次数减为零时才会被删除。获取指定元素的添加次数的方法时:countForObject:。
NSOrderedSet既具有NSSet的特征,也具有NSArray的特征。NSOrderedSet不允许元素重复,但可以保持元素的添加顺序,而且每个元素都有索引。获取索引的方法与NSArray相同。NSMutableOrderedSet代表集合元素可变的有序集合。
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         

0 0
原创粉丝点击