字典類(十一)

2022-08-02 18:36:08 字數 3798 閱讀 1940

字典類

鍵值對,用乙個比喻來說,就是有一堆雜亂的,無序的貨物,要怎麼樣去找到某個貨物,並把貨物拿出來。那麼這裡就要用標籤去給貨物貼上,這樣就能在這堆貨物裡,通過標籤,找到自己想要的貨物了。

鍵值對就是類似於這樣的存在,我們用乙個鍵key來儲存名字,用value來儲存實際的值,這樣就可以直接通過這個key來取到這個值value。

key相當於貨物的標籤,value相當於實際的貨物。

注意:一堆資料裡,key不能重複。

字典是用來儲存具有key-value這樣關係的資料的集合的容器。在字典裡,key的值在oc裡寫的時候,可以寫重複,但是,在存入物件的時候,相同的key只儲存第乙個。(嚴格來說,key的值不能重複)。nsdictionary一旦建立,就不可以修改,不能新增,不能刪除,只能通過key來讀取value的值。

字典的存放順序,不是按照個人的意願進行存放的。而是按照hash演算法算出來的值,然後存放的。

字典的建立:initwithobjectsandkeys

//2023年04月17日11:16:18 北京

//字典

//鍵值對:(key-value)

//key(鍵):相當於貼在貨物上得標籤

//value(值):相當於貨物

//通過標籤找貨物相當於通過key找到value

//nsdictionary(不可變字典)

//value可以重複

//key不能重複(寫成重複可以,但是不能存進字典)

//根據雜湊(hash)算出來的值的順序存放的。

nsdictionary *dict1 = [[nsdictionary alloc]initwithobjectsandkeys:@"value_hello world",@"key_a", @"value_this is a place put value",@"key_b",@"value_biger then bigger",@"b",@"ccc",@"c",nil];//以nil作為結束標誌

nslog(@"%@",dict1);/*

2015-04-17 11:30:36.976 oclesson5_字典[1168:55441]

//a:1,b:2,c:3,d:4

nsdictionary *dict2 = [nsdictionary dictionarywithobjectsandkeys:@"1",@"a",@"2",@"b",@"3",@"c",@"4",@"d", nil];

nslog(@"%@",dict2);/*

2015-04-17 11:35:28.484 oclesson5_字典[1199:56836]

initwithobjectsandkeys這個方法是其中乙個初始化字典的方法,這個方法在初始化的時候,按一對訪問,前邊是value,後邊是key。以nil作為結束標誌。

兩個陣列建立乙個字典:dictionarywithobjects forkeys

這個其實是呼叫了便利構造器。dictionarywithobjects這個方法,引數有兩個,前邊引數是放value得陣列,後邊的引數是放key的陣列。

//兩個陣列建立乙個字典

nsarray *valuearr = [nsarray arraywithobjects:@"1",@"2",@"3",@"4", nil];

nsarray *keyarr = [nsarray arraywithobjects:@"a",@"b",@"c",@"d", nil];

nsdictionary *dict3 = [nsdictionary dictionarywithobjects:valuearr forkeys:keyarr];

nslog(@"%@",dict3);/*

2015-04-17 11:42:01.087 oclesson5_字典[1238:58650]

通過key取值:

//兩個陣列建立乙個字典

nsarray *valuearr = [nsarray arraywithobjects:@"1",@"2",@"3",@"4", nil];

nsarray *keyarr = [nsarray arraywithobjects:@"a",@"b",@"c",@"d", nil];

nsdictionary *dict3 = [nsdictionary dictionarywithobjects:valuearr forkeys:keyarr];

//通過key取值             (key的value值)

nsstring *s1 = [dict3 objectforkey:@"c"];

nslog(@"%@",s1);//2015-04-17 11:44:54.895 oclesson5_字典[1254:59540] 3

count:計算鍵值對個數

//count說的是鍵值對的個數,不是key有多少個,value有多少個。

nsuinteger u1 = [dict3 count];

nslog(@"%lu",u1);//2015-04-17 11:46:50.807 oclesson5_字典[1268:60069] 4

獲取所有key,獲取所有value

//獲取所有的key,返回乙個陣列,裡邊是所有的key

nsarray *keysarr = [dict3 allkeys];

//獲取所有的value,返回乙個陣列,裡邊是所有的value

nsarray *valuesarr = [dict3 allvalues];

nslog(@"%@",keysarr);/*2015-04-17 11:51:31.940 oclesson5_字典[1289:61531] (         a,

d,b,

c)*/

nslog(@"%@",valuesarr);/*2015-04-17 11:51:31.940 oclesson5_字典[1289:61531] (

1,4,2,3

)注意:

1、字典與陣列一樣,不能存標量(基本資料型別資料),只能通過nsnumber來把基本資料型別轉換成物件,才能存進字典。

2、字典中得所有key不能重複。

3、字典的key是id型別(任意型別(前提是遵守nscopying協議)),value也是id型別。

4、遵守nscopying協議

5、不要考慮存放順序的問題。

乙個練習:

列印所有value的值:(1、allvalues 2、allkeys + objectforkey)

//練習:dict3列印所有的value值(2種方式)

nsarray *temp1 = [dict3 allvalues];

for (int i = 0; i < [temp1 count]; i++)

nsarray *temp2 = [dict3 allkeys];

for (int i = 0; i < [temp2 count]; i++)

刪除字典:

[mdict1 removeobjectforkey:@"t1"];

nslog(@"%@",mdict1);/*

2015-04-17 14:56:44.512 oclesson5_字典[1625:87641]

修改字典:

//改[mdict1 setobject:@"banana" forkey:@"t2"];

nslog(@"%@",mdict1);/*

2015-04-17 14:58:59.068 oclesson5_字典[1639:88252]

取值://查

[mdict1 objectforkey:@"t2"];

清空字典:

//清空字典

[mdict1 removeallobjects];

JAVA常見類(十一)Date類

public date 根據當前的預設毫秒值建立物件。public date long date 根據給定的毫秒值建立物件。public long gettime 獲取時間,以毫秒為單位。public void settime 設定時間,以毫秒為單位。dateformat 可以進行日期和字串的格式化...

Python class類轉字典

有時候會需要從包裝的類裡面取出需要的資料,但有不能直接取出來 可以通過如下 把class轉換成字典 將class轉dict,以 開頭的也要 defprops with obj pr for name in dir obj value getattr obj,name ifnot name.start...

word類(字典查詢)

將10個英文單詞物件存放在一維物件陣列dictionary中,程式設計實現根據使用者的輸入找出所有與之 輸入串 匹配的單詞和個數 在陣列中按從前向後的順序 要求採用c 求解 設計乙個word類,包含以下成員 乙個私有資料成員word 乙個建構函式用於給word賦初值 乙個公有成員函式lookup c...