码迷,mamicode.com
首页 > 其他好文 > 详细

Dict 小记

时间:2015-02-14 12:12:55      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:

  Dict 是一个Key-Value字典,与orddict类似,只是比orddict存储的数据要大,具体的接口就不再细说,自己看官方文档,都比较简单,或者看:http://www.techrepublic.com/article/working-with-dictionaries-in-erlang/

这里面有两个存储接口,append和store,有同事问我这两个有什么不同,我能想到的是

1 存储格式不一样,如果存的是列表,

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

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)

store就不用,它自己会自动替换原来的Key,这里省了erase(Key,D), 但具体的效率没有测过哪个更快,对于进程字典的效率本来就比较快,空了可以测一下,或者哪个测过请告知下,谢谢!

另外:在R17后还增加了类似的数据结构map,操作基本类似

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}

Dict 小记

标签:

原文地址:http://www.cnblogs.com/threedays/p/4291370.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!