字典
次要知識點:
1.NSDictionary 類
2.NSMutableDictionary 類
3.理解NSMutableDictionary 與 NSDictionary 的承繼關系
4.補充:
散列存儲:又稱hash存儲,是一種力圖將數據元素的存儲地位與關鍵碼之間樹立確定對應關系的查找技術。散列法存儲的根本思想是:由節點的關鍵碼值決議節點的存儲地址。散列技術除了可以用於查找外,還可以用於存儲。
散列是數組存儲方式的一種開展,相比數組,散列的數據訪問速度要高於數組,由於可以根據存儲數據的局部內容找到數據在數組中的存儲地位,進而可以疾速完成數據的訪問,理想的散列訪問速度是十分迅速的,而不像在數組中的遍歷程,采用存儲數組中內容的局部元素作為映射函數的輸出,映射函數的輸入就是存儲數據的地位,這樣的訪問速度就省去了遍歷數組的完成,因而時間復雜度可以以為為O(1),而數組遍歷的時間復雜度為O(n)。
=========== NSDictionary不可變字典 ================
1、什麼是字典(key-value)
字典是也是一種集合構造,功用與我們理想中的字典工具一樣
2、字典的元素是什麼
恣意類型的對象地址構成鍵值對
3、什麼是鍵值對
鍵值對是由key和value構成必需逐個對應
鍵值對中的key必需保證是獨一的
4、字典的存儲方式
字典是一種無序保管的集合
5、如何查找值
依據鍵值對中的key找到相應的值
================================================
1. NSDictionary(不可變)的創立
1) 如何創立一個字典對象
(1)創立空字典(不必)
NSDictionary *dic = [[NSDictionary alloc] init];
dic = [NSDictionary dictionary];
(2)創立帶有對象的字典
/*
1.一對鍵值對(key-value)
@"key1" = @"1111"
*/
dic = [NSDictionary dictionaryWithObject:@"1111" forKey:@"key1"];
/*
2.有多個鍵值對
*/
NSArray *objArray = @[@"value1",@"value2"];
NSArray *keyArray = @[@"key1",@"key2"];
dic = [NSDictionary dictionaryWithObjects:objArray forKeys:keyArray];
/*
3.有多個鍵值對(另外寫法)
*/
dic = [NSDictionary dictionaryWithObjectsAndKeys:@"value1",@"key1",@"value2",@"key2",@"value3",@"key3", nil];
NSLog(@"%@",dic);
/*
4.拷貝指定字典的鍵值對,前往一個新的字典
*/
[NSDictionary dictionaryWithDictionary:<#(NSDictionary *)#>];
/*
5.疾速創立
公式(鍵值對以","分隔):
@{key:value,key:value...}
*/
dic = @{};//創立一個空字典
dic = @{@"key1":@"value",@"key2":@"value2",@"key6":@"value6"};
2、獲取鍵值對個數
[dic count]
3、如何經過key獲取對應的value
(1)[dic objectForKey:@“key”];字典辦法
id obj = [dic valueForKey:@"key3”];字典辦法
[arr objectAtIndex:index];數組辦法
(2)obj = dic[@"key2"];
留意:A[B] 假如B是整數,A是數組,
假如B是字符串,A就是字典
4、獲取字典中一切的key
[dic allKeys]
5、獲取字典中一切的value
[dic allValues]
6.把字典寫入到指定文件中
dic writeToFile:path atomically:YES];
7.從文件外面讀取字典數據
[NSDictionary dictionaryWithContentsOfFile:path];
8、遍歷字典內容
1)枚舉器法:
<1>鍵的遍歷:
keyEnumerator音訊
作用:獲取一切的key值
NSEnumerator *emunerator = [dict keyEnumerator];
id obj;
while (obj = [emunerator nextObject]) {
NSLog(@“%@“, obj);
}
<2>值得遍歷
objectEnumerator 音訊
2)疾速枚舉法:失掉的是鍵
for (id key in dict)
{
NSLog(@“key — %@, value = %@, key, [dict objectForKey:obj]); // 失掉了鍵就失掉了值
}
9.NSDictionary和NSArray的比照
1)字典絕對與數組的優點
字典獲取元素速度比數組快,緣由是字典經過哈希算法失掉每個元素詳細的地位
2)獲取元素的方式
數組經過下標獲取指定元素的內容 objectAtIndex
字典經過key來獲取指定元素的內容 objectForKey
============NSMutableDictionary可變字典================
1、NSMutableDictionary和NSDictionary的區別
2、如何創立
//初始化一個空字典
NSMutableDictionary *dic = [NSMutableDictionary dictionary];
dic = [[NSMutableDictionary alloc] init];
3、添加鍵值對
/*
(1)key是獨一的,value可以一樣。
(2)添加鍵值對的時分,假如key存在,會交換原來的值(交換)。假如key不存在,添加一個鍵值對(添加)。
*/
(1)[dic setObject:@"value1" forKey:@"key1"];
留意:不存在鍵或許鍵已存在
不存在會保管失敗,且會招致順序奔潰,存在則會掩蓋
4.在以後字典中添加另外一個字典的內容
/*
dic2外面鍵值對添加到dic1
[A addEntriesFromDictionary:B] 把B外面鍵值對添加字典A外面,假如B外面key假如A外面存在相反的key的話也會交換value.
*/
[dic1 addEntriesFromDictionary:dic2];
[dic1 setValuesForKeysWithDictionary:dic3];
5.可變字典的刪除
1)經過指定key刪除一組鍵值對
[dic1 removeObjectForKey:@"key1"];
2)經過指定多個key來刪除相關的鍵值對
[dic1 removeObjectsForKeys:@[@"key1",@"key2",@"key4"]];
3)刪除字典中一切的鍵值對
[dic1 removeAllObjects];
6、修正
1) 修正整個字典
[dic1 setDictionary:dic3];
2) 修正鍵值對
[dic1 setObject:<#(id)#> forKey:@“字典存在的key”];
【iOS開發-OC言語 (五)字典】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!