字典
字典⽤於保存具有映射關係(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);