1. 程式人生 > >NSDictionary 字典 集合NSSet

NSDictionary 字典 集合NSSet

<span style="font-size:18px;">/*字典存在的價值 :
         0. 字典類是用於儲存具有對映關係(key - value對)的資料, 字典一旦建立,鍵值對就不可更改, 不可新增, 不可刪除.僅能讀取key 或者 value
         1. 大容器,用來儲存多個數據, 
         2.用來儲存的資料具有--對應的關係.(使用key 來標識 value).
         3.對於字典中的一對鍵值對(key - value)叫做字典中的一個元素. 也叫一個條目, 只要是物件就可以, 不限制類型.
         4.字典是無序的
         5.字典中的key是唯一的, 一個key 只能對應一個value ,一個value 可以對應多個 key.*/
        //1.建立字典物件
        //(1)便利構造器
        NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"Summer", @"name", @"male", @"gender", @20, @"height", @12, @"age", nil];
        NSLog(@"%@", dic);
        //(2)初始化方法
        NSDictionary *dic1 = [[NSDictionary alloc] initWithObjectsAndKeys:@"Summer", @"name", @"male", @"gender", @20, @"height", @12, @"age", nil];
        NSLog(@"%@", dic1);
        //2.求字典元素個數
        NSInteger count = [dic count];
        NSLog(@"count = %ld", count);
        //3.獲取所有的key
        NSArray *keys = [dic allKeys];
        NSLog(@"%@", keys);
        //4獲取所有的value
        NSArray *value = [dic allValues];
        NSLog(@"%@", value);
        //5.根據key獲取對應的value
        //通過為物件字典傳送objeForKey訊息可以根據給定的key去獲取對應的value,這裡如果給定的key不存在,則返回null作為value,表示沒有找到對應的value.
        NSString *name = [dic objectForKey:@"name"];
        NSLog(@"name = %@", name);
        NSNumber *age = [dic objectForKey:@"age1"];
        NSLog(@"age = %@", age);
        NSString *gender = [dic objectForKey:@"gender"];
        NSLog(@"gender = %@", gender);
        NSNumber *height = [dic objectForKey:@"height"];
        NSLog(@"height = %@", height);

        //字典快速遍歷
        //快速遍歷: 對於陣列來說,遍歷得到的是陣列中的每一個元素
        //對於字典來說, 遍歷得到的是字典中的key, 然後通過key 獲取 value
        for (NSString *key in dic) {
            //檢索到key之後,通過objectForKey 獲取key對於的value
            NSLog(@"%@", [dic objectForKey:key]);
        }
        
        
        
        
        //對於可變字典來說,比不可變字典多了增加, 刪除, 修改操作
        //1.建立物件
        NSMutableDictionary *mutableDic = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"Summer", @"name1", @"Sunshine", @"name2", @"Angle", @"name3", nil];
        NSLog(@"%@", mutableDic);
        //2.求字典元素個數
        NSInteger count = [mutableDic count];
        NSLog(@"count = %ld", count);
        //3.刪除元素
        [mutableDic removeObjectForKey:@"name3"];
        NSLog(@"%@", mutableDic);
        [mutableDic removeAllObjects];
        NSLog(@"%@", mutableDic);
        //批量刪除
        [mutableDic removeObjectsForKeys:[NSArray arrayWithObjects:@"name1", @"name2", nil]];
        NSLog(@"%@", mutableDic);
        //4.新增元素
        [mutableDic setObject:@"Kimi" forKey:@"name1"];
        NSLog(@"%@", mutableDic);
        //5.修改key對應的value
        [mutableDic setObject:@"Angle" forKey:@"name1"];
        NSLog(@"%@", mutableDic);
        //setObject: forKey: 工作原理
//        先根據指定得key查詢字典中是否存在相同的key.(查詢字典中是否存在指定的key).如果存在則修改key對應的value. 如果不存在,在字典中新增一個元素,key - value 鍵值對</span>
<span style="font-size:18px;">
</span>
<pre name="code" class="objc"><span style="font-size:18px;">//集合
//1.集合與數學集合一樣, 儲存的元素互不相同(互異性)(唯一性).
//2.儲存的元素無序性
//3.儲存元素必須是物件型別
        //1.建立集合物件
        //(1)遍歷構造器方法
        NSSet *set1 = [NSSet setWithObjects:@"Summer", @"Sunshine", @"Angle", @"procedure", @"oriented", @"programming", nil];
        NSLog(@"%@", set1);
        //(2)初始化方法
        NSSet *set2 = [[NSSet alloc] initWithObjects:@"Summer", @"Sunshine", @"Angle", @"procedure", @"oriented", @"programming", @"Object", @"oriented", @"programming", nil];
         NSLog(@"%@", set2);
        //2.獲取元素個數
        NSInteger count = [set2 count];
        NSLog(@"count = %ld", count);
        //3.獲取集合中的某個元素(為了方便性)
        NSString *str1 = [set2 anyObject];
        NSLog(@"%@", str1);
        NSString *str2 = [set2 anyObject];
        NSLog(@"%@", str2);
        NSString *str3 = [set2 anyObject];
        NSLog(@"%@", str3);
        NSString *str4 = [set2 anyObject];
        NSLog(@"%@", str4);
        NSString *str5 = [set2 anyObject];
        NSLog(@"%@", str5);
        //4.判斷集合中是否包含某個物件
        BOOL isExist = [set2 containsObject:@"Summer"];
        NSLog(@"%d", isExist);
</span>
<span style="font-size:18px;">//可變集合
         NSMutableSet *set2 = [[NSMutableSet alloc] initWithObjects:@"Summer", @"Sunshine", @"Angle", @"procedure", @"oriented", @"programming", @"Object", @1, @"programming", @"programming", @"programming", @1, @1,nil];
        NSLog(@"%@", set2);
        //1.新增元素
        [set2 addObject:@"Cindy"];
         NSLog(@"%@", set2);
        //2.移除元素
        [set2 removeObject:@"Summer"];
         NSLog(@"%@", set2);
        
        //求帶有記錄物件重複次數的子類NSCountSet
        NSCountedSet *countedSet = [NSCountedSet setWithObjects:@"programming", @"programming",@"programming",nil];
        //通過例項方法countForObject:來得到指定物件的重複次數
        NSInteger count = [countedSet countForObject:@"programming"];
        NSLog(@"count = %ld", count);
</span>