OC初期-05字典,集合

字典

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

可變集合

  1. 初始化空的集合

    NSMutableSet *set = [NSMutableSet set];
    
  2. 添加元素

    [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);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章