字典
字典⽤于保存具有映射关系(key-value对)数据的集合。
一个key-value对认为是一个条⽬目(Entry),字典是存储key-value 对的容器。
特点:
与数组不同,字典靠key存取元素。
key不能重复,value必须是对象。
键值对在字典中是⽆无序存储的。
字典分:不可变字典(NSDictionary)和可变字典 (NSMutableDictionary)
- 不可变字典NSDictionary
字典一旦创建,键值对就不可更改,不可添加,不可删除。
仅能读取key或者value。
创建字典对象
1.用两个数组初始化一个不可变字典
NSArray *keys = @[@"name",@"sex",@"age"];
NSArray *values = @[@"jtt",@"nan",@"24"];
NSDictionary *dic = [NSDictionary dictionaryWithObjects:values forKeys:keys];
2.自定义初始化方法
NSDictionary *dic1 = [[NSDictionary alloc]initWithObjects:values forKeys:keys];
3.构造遍历器方法(value,key)
NSDictionary *dic2 = [NSDictionary dictionaryWithObjectsAndKeys:
@"jtt",@"name",
@"nan",@"sex",
@"24",@"age",nil];
4.语法糖(初始化顺序 { key : value ,…})
NSDictionary *dic = @{@"name" : @"jtt",
@"sex" : @"nan",
@"age" : @"18"};
获取所有key值,获取所有value值。
NSArray *keys = [dic2 allKeys];
NSArray *values = [dic2 allValues];
通过key值查询value。(取出的是什么类型,就用什么类型去接收)
NSString *value = [dic objectForKey:@"name"];
NSString *age = dic[@"age"];
获取元素个数
NSInteger count = [dic count]; 
- 可变字典(必须先进行初始化,才能使用)
创建对象
1.NSMutableDictionary *dic = [NSMutableDictionary dictionary];
2.初始化的时候 给一个建议的容量
NSMutableDictionary *dic = [[NSMutableDictionary alloc]initWithCapacity:10];
3.NSMutableDictionary *dic1 = [[NSMutableDictionary alloc]init];
添加键值对
[dic1 setObject:@"jtt" forKey:@"name"];
[dic1 setObject:@"nan" forKey:@"sex"];
[dic1 setObject:@"24" forKey:@"age"];
根据key删除键值对
[dic1 removeObjectForKey:@"sex"];
NSArray *keys = [dic1 allKeys];
[dic1 removeObjectsForKeys:keys];
快速遍历
for (容器中存的对象的类型 obj in 要遍历的容器(数组或字典)) {
NSLog(@”%@”,obj);
}
使用快速遍历forin时 一般只用来打印
遍历字典 是遍历字典中的所有key
for (NSString *key in dic) {
// 用所有key取出value
NSString *value = dic[key];
NSLog(@"%@ = %@",key,value);
}
遍历数组 是遍历数组中的每一个元素
for (NSString *str in arr1) {
NSLog(@"%@",str);
}
集合
特点:无序,不重复
不可变集合
初始化集合
NSSet *set = [[NSSet alloc]initWithObjects:@"1",@"2",@"3",@"2", nil];
获取长度
NSInteger count = [set count];
获取集合中的一个元素,anyObject 返回一个计算机认为最合理的元素
NSString *str = [set anyObject];
可变集合
初始化空的集合
NSMutableSet *set = [NSMutableSet set];
添加元素
[set addObject:@"2"]; [set addObject:@"1"]; [set addObject:@"3"]; [set addObject:@"2"];
3 删除元素
[set removeObject:@"2"];
[set removeAllObjects];
4.计算重复元素个数的集合
NSArray *arr = @[@"1",@"2",@"3",@"3",@"3" ];
NSCountedSet *set3 = [NSCountedSet setWithArray:arr];
NSInteger count = [set3 countForObject:@"3"];
NSLog(@"%ld",count);
数组排序
不可变数组排序
NSArray *array = @[@"1",@"3",@"4",@"26",@"8"];
NSArray *arrayNew = [array sortedArrayUsingSelector:@selector(compare:)];
NSLog(@"%@",arrayNew);
可变数组排序(不需要返回值,操作的是原数组)
NSMutableArray *arr = [NSMutableArray arrayWithObjects:@"1",@"3",@"7",@"5", nil];
[arr sortUsingSelector:@selector(compare:)];
NSLog(@"%@",arr);