OC学习第五天_字典、集、数组排序:字典类、集合类、数组数组排序、字典、集合的快速遍历、数组排序

⼀、字典类
如何存储下⾯的数据
name:张三;sex:男;age:18
filmName:⻛暴;playCount:100000次;price:60元
项⺫开发中,很多时候都会⽤到上述类型的数据。
如果不使⽤⾃定义的类(Person、Film),有什么⽅法存储上述数
据?
字典简介
字典⽤于保存具有映射关系(key-value对)数据的集合。
对于“name:张三”来讲,key就是“name”,key对应的value是“张
三”
⼀个key-value对认为是⼀个条⺫(Entry),字典是存储key-value
对的容器。
字典类的特点:
与数组不同,字典靠key存取元素。
key不能重复,value必须是对象。
键值对在字典中是⽆序存储的。
字典分:不可变字典(NSDictionary)和可变字典
(NSMutableDictionary)
NSDictionary
不可变字典(NSDictionary),
字典⼀旦创建,键值对就不可更改,不可添加,不可删除。
仅能读取key或者value。
常⽤⽅法
创建字典对象。

NSDictionary *dic = [NSDictionary dictionary];

获取所有key值,获取所有value值
@property (readonly, copy) NSArray *allKeys;
@property (readonly, copy) NSArray *allValues;
返回值都是不可变数组类型的数组

NSDictionary *dic = [NSDictionary dictionary];
NSArray *array = [dic allKeys];
NSArray *array1 = [dic allValues];

通过key值查询value。
- (id)objectForKey:(id)aKey;
返回类型和Key对应的value类型一致
假如key是name,那么返回的就是关键字对应的名字,比如张三;

    NSString *nameValue= [dic objectForKey:name];

NSMutableDictionary
可变字典
NSDictionary的⼦类。
可以对管理的键值对进⾏增、删、改。
常⽤⽅法
创建字典对象,和不可变字典相同
添加键值对(记住使用set,数组用的是addObject)
- (void)setObject:(id)anObject forKey:(id )aKey;

修改key对应的value
- (void)setValue:(id)value forKey:(NSString *)key;

删除键值对。
- (void)removeObjectForKey:(id)aKey;

通过for循环遍历所有键值对
for (key的类型 key同类型的变量名 in 字典) {
// 执行你想要的操作
// 比取出所有的value放到一个数组中 还是用name:@”张三” 这样类型键值对
}
下面没有用获取所有values的方式,采用的单个添加

    for (NSString *key in dic) {
        // 声明一个存储所有value值的数组
        NSMutableArray *array = [NSMutableArray array];
        NSString *str = [dic objectForKey:key];
        [array addObject:str];
    }

⼆、集合类
集合(set)
数学中有集合的概念。
⽐如:整数集、⾃然数集。
再⽐如:集合{1,2,3,4},集合{2,3,5,6}
iOS中也有集合类与数学中的集合对应。
特点
与数学中的集合⼀样,集合中的元素唯⼀。
存储的元素是⽆序的
存储元素必须是对象类型
iOS中⽤Set表⽰集合,分NSSet和NSMutableSet
NSSet的常⽤⽅法
创建集合对象。
获取元素个数。
获取集合中的某个元素。
判断集合中是否包含某个对象。
NSMutableSet的常⽤⽅法
创建集合对象。
添加元素。
删除元素。
NSCountedSet
NSCountedSet是NSMutableSet的⼦类
能记录元素的重复次数。
在set的基础上添加了计数功能。
- countForObject:
三、集合类型的快速枚举
快速枚举
for (<#type *object#> in <#collection#>) {

}
1、object是遍历得到的元素对象。
2、collection是集合类型的对象:数组、字典、集合。
结合类型枚举特点
数组枚举得到数组中的元素对象。
字典枚举得到字典中的key值。
集合枚举得到集合中的元素对象。
四、数组排序
冒泡排序
数组排序
排序
数组排序取决于判断条件,判断条件决定了排序的⽅式(升序、
降序)。
iOS为数组类提供了排序⽅法,同时提供了接⼝让我们传递判断条
件。
数组默认排序
[array sortedArrayUsingSelector:<#(SEL)#>]
[mutableArray sortUsingSelector:<#(SEL)#>]
@selector,获取⽅法名。这个⽅法名是数组中元素的⽅法。
默认使⽤升序排列。
总结
字典是⼀种存储键值对的容器,靠key来索引数据。
集合存储的数据⽆序、不重。
for(type *obj in collection)是OC中快速遍历数据的⽅式。
数组封装了排序,同时为我们提供了接⼝,⽅便我们控制排序。
每⼀种collection都有⾃⼰特点,使⽤符合⾃⼰需求的collection。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值