程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> Object C學習筆記13-Dictionary字典

Object C學習筆記13-Dictionary字典

編輯:關於C語言

通過Array數組和Set集合的學習和理解,可以想象得到Dictionary也分為兩種情況了,那就是可變和不可變兩種類型的。的確如此,在Object C中提供了兩個字典類,分別為NSDictionary 和 NSMutableDictionary. 在.NET中我們也學習過Dictionary類,這個集合的存儲方式是鍵值對的方式存儲的。而且使用Dictionary查找元素也極為簡單。         一 NSDictionary 不可變字典       (1) 初始化字典   復制代碼 NSDictionary *dic=[NSDictionary dictionaryWithObject:@"hechen" forKey:@"name"];         NSDictionary *dic1=[NSDictionary dictionaryWithObjectsAndKeys:@"hechen",@"name",@"25",@"age", nil];         NSDictionary *dic2=[[NSDictionary alloc] init];                  NSLog(@"%d",[dic count]);         NSLog(@"%d",[dic1 count]);         NSLog(@"%d",[dic2 count]);          復制代碼     上面列舉了三種方式來初始化字典對象:       1. [[NSDictionary alloc] init] 方法最為常見了,先給NSDictionary分配空間再初始化,這也是大眾的方式;       2. 使用dictionaryWithObject forkey 該方法在初始化的時候提供了兩個參數,第一個為存儲的值,第二個為key,這個和我們平時在.NET中有點不一樣的,這裡的key是放在後面的。       3. 使用dictionaryWithObjectsAndKeys 這個方法同樣用於初始化NSDictionary,這裡可以傳入多個值,奇數為value值,偶數為key值,但是必須以nil形式結尾。這個和之前的NSArray,NSSet一致,標識集合的結束。       (2)獲得NSDictionary的長度       NSDictionary的長度使用方法count方法來獲得,這個和大多數集合一樣    測試例子     以上代碼中獲得了三個NSDictionary的長度,分別輸出的結果為1,2,0;這裡也剛好說明了上面三種方式初始化的不同之處。       (3)獲得NSDictionary中Keys的迭代   NSEnumerator *enumer=[dic1 keyEnumerator];         NSString *key2=[enumer nextObject];         while(key2!=nil){             NSLog(@"輸出Key=%@",key2);             key2=[enumer nextObject];         }     以上代碼可以看得出來使用keyEnumerator 方法獲取NSDictionary Key的集合迭代,然後使用迭代器遍歷輸出所有的元素。       (4)獲取NSDictionary中的Values的迭代    測試案例     獲取Value的方法和獲取key的方法基本類似,這裡在循環遍歷的時候有些不同,但是兩者的結果是一樣的,可以稍微注意一下       (5)根據Key獲取Value   NSString *va=[dic1 objectForKey:@"name"];         NSLog(@"objectForKey = %@",va);     在Object C通過key獲取Value要使用方法objectForKey,在上面的案例中已經簡單而且明確的展示了其用法。         二. NSMutableDictionary 動態字典       NSMutableDictionary 是NSDictionary的子類,繼承了其所有的方法和屬性。但是和NSDictionary有著一定的區別就是NSMutableDictionary可以動態的修改和增加刪除裡面的元素。       (1) dictionaryWithCapacity方法設置其初始容量   NSMutableDictionary *muDic1=[NSMutableDictionary dictionaryWithCapacity:10];     上面的代碼中初始化了一個NSMutableDictionary對象,並且設置其初始容量為10; 和NSMutableArray,NSMutableSet一樣,當存儲的元素達到最大容量之後會自動擴充容量,所以不用擔心數組越界。       (2) 往NSMutableDictionary中添加元素   復制代碼 [muDic1 setObject:@"中國" forKey:@"name"];         [muDic1 setObject:@"area" forKey:@"add"];         NSEnumerator *enumerKeys=[muDic1 keyEnumerator];         for(NSString *key in enumerKeys){             NSString *value=[muDic1 objectForKey:key];             NSLog(@"輸出的值 = %@",value);         } 復制代碼     從以上代碼可以看到使用 setObject forKey 方法可以往字典中添加元素, 方法的前一個參數為value,後一個參數為key。使用循環可以得到相應的值。       (3) 刪除字典中的元素   [muDic1 removeObjectForKey:@"add"];         for(NSString *key in [muDic1 keyEnumerator]){             NSLog(@"-----%@",[muDic1 objectForKey:key]);         }     以上代碼是根據一個key值來刪除NSMutableDictionary中的元素,所使用的方法為removeObjectForKey,在NSMutableDictionary中還提供了根據多個key值刪除的元素的方法。       - (void)removeObjectsForKeys:(NSArray *)keyArray;這個方法參數為一個數組,用於刪除數組中包含的key的所有元素。   復制代碼 [muDic1 removeObjectsForKeys:[NSArray arrayWithObjects:@"ab", nil]];   [muDic1 removeAllObjects];   for(NSString *key in [muDic1 keyEnumerator]){     NSLog(@"*********%@",[muDic1 objectForKey:key]); } 復制代碼     上面第一句代碼用於從數組中刪除包含的元素,而第二句則用於刪除NSMutableDictionary中的所有元素。最終沒有任何結果輸出。           以上是關於字典的相關內容的簡單介紹,系統提供的方法遠不止這些,仍需要不斷的去努力與實踐,實踐永遠是最有效的方法。    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved