《Objective-C编程 第二版》笔记12:Collection类

        Collection类的实例用于保存指向其他对象的指针。

1、NSSet/NSMutableSet

NSSet对象包含的内容是无序的,而且每个特定的对象只能出现一次。

NSSet对象最大的用处是检查某个对象是否存在

NSSet对象不能对指针进行修改。

NSMutableSet是它的子类,它能够对其中的指针进行添加或删除等操作。

NSSet对象中的对象是无序的,所以不能通过索引来访问,只能向NSSet对象查询某个对象是否存在。

- (BOOL) containsObject:(id)x;

 

2、NSDictionary/NSMutableDictionary

NSDictionary对象是一组键值对的集合。键通常是字符串,值可以是任意类型的对象。

字典也没为NSMutableDictionary及NSDictionary两种。

字典的创建方式:(注意@符号)

 获取字典中的元素

NSString *marsMoonCount = numberOfMoons[@"Mars"];

//创建NSMutableDictionary对象
NSMutableDictionary *executives = [[NSMutableDictionary alloc] init];

//添加元素
[executives setObject:mikey forKey:@"CEO"];

3、不可修改对象

    使用不能修改的collection可以节约内存提高性能,因为它永远无须拷贝。

     NSArray的copy方法其实不会做任何额外的工作,仅仅返回指向自身的指针。

    NSMutableArray的copy方法则会制作一份自己的拷贝,并返回指向新数组对象的指针。

4、数组排序

不可修改的数组不能排序。

修改main.m,先根据valueOfAssets属性排序,如果相同,则根据employeeID排序。

//定义两种排序规则
NSSortDescriptor *voa = [NSSortDescriptor sortDescriptorWithKey:@"valueOfAssets" 
                         ascending:YES];
NSSortDescriptor *eid = [NSSortDescriptor sortDescriptorWithKey:@"employeeID"                     
                         ascending:YES];
//进行排序
[employees sortUsingDescriptors:@[voa, eid]];

5、过滤

//创建过滤规则
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"holder.valueOfAssets > 70"];
//过滤
NSArray *toBeRecalaimed = [allAssets filteredArrayUsingPredicate:predicate];
//输出
NSLog(@"toBeReclaimed:%@",toBeRecalaimed);
//置空
toBeRecalaimed = nil;

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值