NSSet 使用(九)

NSSet 使用如下:


#import "MS_NSSet.h"

@implementation MS_NSSet

@synthesize _nsSet;

-(void)showNSSet
{
    /*
     NSSet到底什么类型,其实它和NSArray功能性质一样,用于存储对象,属于集合; NSSet  , NSMutableSet类声明编程接口对象,无序的集合,在内存中存储方式是不连续的,不像NSArray,NSDictionary(都是有序的集合)类声明编程接口对象是有序集合,在内存中存储位置是连续的;
     
     NSSet和我们常用NSArry区别是:在搜索一个一个元素时NSSet比NSArray效率高,主要是它用到了一个算法hash(散列,也可直译为哈希);开发文档中这样解释:You can use sets as an alternative to arrays when the order of elements isn’t important and performance in testing whether an object is contained in the set is a consideration—while arrays are ordered, testing for membership is slower than with sets.
     比如你要存储元素A,一个hash算法直接就能直接找到A应该存储的位置;同样,当你要访问A时,一个hash过程就能找到A存储的位置。而对于NSArray,若想知道A到底在不在数组中,则需要便利整个数组,显然效率较低了;
     */
    
    
    _nsSet = [[NSSet alloc] initWithObjects:@"A",@"B",@"C",@"D", nil];

    //判断NSSet中是否有此元素存在
    id item = [_nsSet member:@"N"];
    NSLog(@"NSSet member:%@",item);
    
    NSEnumerator *enumberator = [_nsSet objectEnumerator];
    NSObject *enumberItem;
    while((enumberItem = enumberator.nextObject) != nil)
    {
        NSLog(@"Enumber Item:%@",enumberItem);
    }
    
    //通过测试,NSSet 的 anyObject 返回set中的第一个元素,而不是随机一个元素
    for(int i=0;i<8;i++)
    {
        id anyItem = [_nsSet anyObject];
        NSLog(@"NSSet any object :%@",anyItem);
    }
    
    BOOL contains = [_nsSet containsObject:@"I"];
    NSLog(@"NSSet Contains :%i",contains);
    
    
    
}

@end


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值