5、字典、集合、数组排序

时间:2022-09-03 15:07:18

字典类

字典简介

  • 字典⽤于保存具有映射关系(key-value对)数据的集合
  • 对于“name:张三”来讲,key就是“name”,key对应的value是“张三”
  • ⼀个key-value对认为是⼀个条⺫(Entry),字典是存储key-value对的容器

特点

  • 与数组不同,字典靠key存取元素
  • key不能重复,value必须是对象
  • 键值对在字典中是⽆序存储的
  • 不可变字典(NSDictionary)和可变字典
    (NSMutableDictionary)

NSDictionary(不可变字典)

字典⼀旦创建,键值对就不可更改,不可添加,不可删除
仅能读取key或者value

常⽤⽅法

  • 创建字典对象
  • 获取所有key值,获取所有value值
  • 通过key值查询value

NSMutableDictionary(可变字典)

NSDictionary的⼦类
可以对管理的键值对进⾏增、删、改

常⽤⽅法

  • 创建字典对象
  • 添加键值对
  • 修改key对应的value
  • 删除键值对
  • 通过for循环遍历所有键值对

集合类(set)

特点

  • 与数学中的集合⼀样,集合中的元素唯⼀
  • 存储的元素是⽆序的
  • 存储元素必须是对象类型
  • iOS中⽤Set表⽰集合,分NSSet和NSMutableSet

NSSet(不可变集合)

  • 创建集合对象
  • 获取元素个数
  • 获取集合中的某个元素
  • 判断集合中是否包含某个对象

NSMutableSet(可变集合)

  • 创建集合对象
  • 添加元素
  • 删除元素

NSCountedSet

  • NSCountedSet是NSMutableSet的⼦类
  • 能记录元素的重复次数
  • 在set的基础上添加了计数功能:- countForObject:

数组、字典、集合的快速遍历

for (<#type *object#> in <#collection#>) { 
//object是遍历得到的元素对象
//collection是集合类型的对象:数组、字典、集合
}

结合类型枚举特点

  • 数组枚举得到数组中的元素对象
  • 字典枚举得到字典中的key值
  • 集合枚举得到集合中的元素对象

数组排序

参考资料:
Objective C中数组排序几种情况的总结

//数据源,对数组里面的字典的age属性进行排序
NSMutableArray *array1 = [[NSMutableArray alloc ]initWithObjects:
@{@"name":@"a",@"age":@"22"},
@{@"name":@"b",@"age":@"32"},
@{@"name":@"c",@"age":@"25"},
@{@"name":@"d",@"age":@"45"},
@{@"name":@"e",@"age":@"56"},
nil];

冒泡排序

//冒泡排序
for (int i = 0; i<[array1 count]-1; i++) {
for (int j =0; j<[array1 count]-i-1; j++) {
NSInteger data1 = [array1[j+1][@"age"]intValue];//将对象类型转换为NSInteger
NSInteger data2 = [array1[j] [@"sex"]intValue];//将对象类型转换为NSInteger
if (data1 == MIN(data1, data2)) {//判断data1与data2的大小,当data1<data2时执行交换,即降序排列
//对数组里的数据逆序存放
[array1 exchangeObjectAtIndex:j+1 withObjectAtIndex:j];
}
}
}

简单排序(sortedArrayUsingSelector:)

  • [array sortedArrayUsingSelector:<#(SEL)#>]
  • [mutableArray sortUsingSelector:<#(SEL)#>]
  • @selector,获取⽅法名。这个⽅法名是数组中元素的⽅法。
  • 默认使⽤升序排列
void sortArray1(){

NSArray *array = [NSArray arrayWithObjects:@"abc",@"456",@"123",@"789",@"ef",nil];//创建数组

NSArray *sortedArray = [array sortedArrayUsingSelector:@selector(compare:)];//对数组进行排序,默认升序

NSLog(@"排序后:%@",sortedArray);

}