Dict 小記

  Dict 是一個Key-Value字典,與orddict相似,只是比orddict存儲的數據要大,具體的接口就再也不細說,本身看官方文檔,都比較簡單,或者看:http://www.techrepublic.com/article/working-with-dictionaries-in-erlang/數據結構

這裏面有兩個存儲接口,append和store,有同事問我這兩個有什麼不一樣,我能想到的是app

1 存儲格式不同,若是存的是列表,fetch

Ḁ1> D = dict:new().
{dict,0,16,16,8,80,48,
{[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]},
{{[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}}}spa

6> D3 = dict:append(1, [a,b], D).
{dict,1,16,16,8,80,48,
{[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]},
{{[],[],[],[],[],[],[],[],[],[],[],
[[1,[a,b]]],
[],[],[],[]}}}
7> D4 = dict:store(1, [a,b], D).
{dict,1,16,16,8,80,48,
{[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]},
{{[],[],[],[],[],[],[],[],[],[],[],[[1,a,b]],[],[],[],[]}}}接口

一個是[[1,[a,b]]], 一個是[[1,a,b]],這個其實沒什麼,主要是filter的時候要注意格式配置進程

2 append是追加,若是你要替換原來的Key, 要先erase(Key, D), 再 dict:append(Key, Value)rem

store就不用,它本身會自動替換原來的Key,這裏省了erase(Key,D), 但具體的效率沒有測過哪一個更快,對於進程字典的效率原本就比較快,空了能夠測一下,或者哪一個測過請告知下,謝謝!文檔

另外:在R17後還增長了相似的數據結構map,操做基本相似get

M = maps:new().
M1 = maps:put(k1,v1,M).
maps:get(k1,M1).
maps:find(k1,M1).
M2 = maps:remove(k1,M1).

get 和 fetch同樣,在key不存在的時候,會crash,find會返回error,成功則返回{ok,v1}
相關文章
相關標籤/搜索