23、Data.Map
关联列表可理解为字典,是按照键值对排列而没有特定顺序的一种List。
Prelude> let myphones=[("zhangsang",28)]
Prelude> let myphones=[("zhangsang",28),("lisi",22),("wangwu",33)]
fromlist函数接收一个关联列表然后返回一个关联列表对应的map(映射)。
fromList [("zhangsang",28),("lisi",22),("wangwu",33)]
empty产生一个空map
insert插入一个键值对,返回一个新的map
Prelude Data.Map> let mypeoples=fromList [("zhangsang",28),("lisi",22),("wangwu",33)]
Prelude Data.Map> insert "lixing" 25 mypeoples
fromList [("lisi",22),("lixing",25),("wangwu",33),("zhangsang",28)]
Prelude Data.Map>
null返回map是否为空
Prelude Data.Map> Data.Map.null mypeoples
False
Prelude Data.Map>
size返回map大小
singleton接收一对键值,然后创建一个新列表
Prelude Data.Map> singleton "wanghui" 33
fromList [("wanghui",33)]
lookup查找键,返回对应值
Prelude Data.Map> Data.Map.lookup "lisi" mypeoples
Just 22
Prelude Data.Map>
member返回该键是否存在
Prelude Data.Map> member "lisi" mypeoples
True
map和filter对值进行操作
keys和elems返回map的键和值
Prelude Data.Map> keys mypeoples
["lisi","wangwu","zhangsang"]
Prelude Data.Map> elems mypeoples
[22,33,28]
Prelude Data.Map>
fromListWith不放弃重复键但通过指定的函数产生map,fromList会消除重复的键。
Prelude Data.Map> fromList [("zhangsang",28),("lisi",22),("wangwu",33),("lisi",21)]
fromList [("lisi",21),("wangwu",33),("zhangsang",28)]
Prelude Data.Map>
Prelude Data.Map> fromListWith max [("zhangsang",28),("lisi",29),("wangwu",33),("lisi",24)]
fromList [("lisi",29),("wangwu",33),("zhangsang",28)]
Prelude Data.Map>
insertWith通过指定的函数将重复键加入map,其它和insert一样
本博客所有内容是原创,未经书面许可,严禁任何形式的转载。
http://blog.youkuaiyun.com/u010255642