emmap erlang_erlang的map基本使用
maps
适用于需要在运行时改变数据结构(record则不行)的场景,可以动态增加key
数据量不宜过大,具体多大没有实际数据,
maps from_list 如果list表很长,则相应的耗时时间会很长,此时最好用lists模块。
由于map是动态结构,速度上必然无法匹敌record。
内存大小介于tuple与list之间
lists:sort([1,#{}, {}, []]).
[1,{},#{},[]]
Operations
Records
Maps
Dict
Immutable
✓
✓
✓
Keys of any type
✓
✓
Usable with maps/folds
✓
✓
Content opaque to other modules
✓
Has a module to use it
✓
✓
Supports pattern matching
✓
✓
All keys known at compile-time
✓
Can merge with other instance
✓
✓
Testing for presence of a key
✓
✓
Extract value by key
✓
✓
✓
Per-key Dialyzer type-checking
✓
*
Conversion from/to lists
✓
✓
Per-element default values
✓
Standalone data type at runtime
✓
Fast direct-index access
✓
* The EEP recommends making this possible for keys known at compile-time, but has no ETA on when or if this will happen.
示例代码
-module(test).-compile([export_all]).%maps:% find/2 fold/3 from_list/1 get/2 get/3
% is_key/2 keys/1 map/2 merge/2 module_info/0
% module_info/1 new/0 put/3 remove/2 size/1
% to_list/1 update/3 values/1 with/2 without/2start()->A= #{k1 => 1, k2 => 2, k3 => 3},
#{k1 := K1} =A,
A1= A#{ k1 := K1 + 1}.%make()->
% maps: new |from_list
M1=maps:new(),%insert new one
M2= M1#{ k1 => 1},%update
M3= M2#{ k1 := 2},%maps 模块封装了一些函数
maps:put(k2,2, M3).%匹配
match(#{k1 := K1}) -> io:format("~p ~n", [K1]);
match(#{nothing := N}) -> io:format("~p ~n", [N]).
raw()->[ {I, I}|| I
get()->L=raw(),
lists:keyfind(999, 1, L).
get2()->M=maps:from_list(raw()),
maps:get(999, M).
更多阅读:
http://learnyousomeerlang.com/maps
http://erlang.org/doc/man/maps.html
emmap erlang_erlang的map基本使用相关推荐
- emmap erlang_erLang学些笔记2—基本类型
7.Lists 集合 1.可以包含任何类型数据,最常用的数据结构之一 1> Li = [1,3,{tt,22},5.3,kj]. [1,3,{tt,22},5.3,kj] 2.在List中erl ...
- Map的分类和不同的应用场景
java为数据结构中的映射定义了一个接口java.util.Map; 它有四个实现类,分别是HashMap,Hashtable,LinkedHashMap和TreeMap 可能很多人只使用过HashM ...
- java1.8新增超实用Map方法——Map.getOrDefault()和Map.value()方法详解
1. Map.getOrDefault() 翻译一下官方解释: java.util.Map<K, V> V getOrDefault(Object key, V defaultValue) ...
- Go 学习笔记(67)— Go 并发安全字典 sync.Map
1. 并发不安全的 map Go 语言中的 map 在并发情况下,只读是线程安全的,同时读写是线程不安全的. 换句话说,在同一时间段内,让不同 goroutine 中的代码,对同一个字典进行读写操作是 ...
- Python 常用内置函数map、zip、filter、reduce、enumerate
Python 中有许多非常实用的内置函数,通过这些函数我们可以方便的实现某些功能,下面就列举一些常用的内置函数. 1. map() 函数 map() 可以根据提供的函数对指定序列做映射,它接受一个函数 ...
- 将request中的所有参数存放到自定义的map中
/*** <获取参数map>* * @return 参数map* @throws Exception */protected Map<String, Object> getPa ...
- Map再整理,从底层源码探究HashMap
前言 本文为对Map集合的再一次整理.内容包括:Map HashMap LinkedHashMap TreeHashMap HashTable ConcurrentHashMap Map Map< ...
- Java集合详解之Map
一.首先看看集合框架体系图 从图中可以看到,Map接口扩展了Iterator接口,关于Iterator接口详解请移步:Iterator接口详解 二.Map是什么? Map<k,v>使用键值 ...
- 网络模型mAP计算实现代码
网络模型mAP计算实现代码 一.mAP精度计算 这里首先介绍几个常见的模型评价术语,现在假设我们的分类目标只有两类,计为正例(positive)和负例(negtive)分别是: 1)True posi ...
最新文章
- 去年秋招,我学长拿了7个Offer,他是怎么做到的?
- 10 家世界顶级的公司都在用 Python 做什么?
- 我是如何把VC6一直用到2016年的
- scala字符替换_如何替换Scala中的“坏”字符?
- 苹果支付招聘业务开发经理 需有加密货币支付工作经验
- python中msg是什么意思,使用python解析Outlook .msg文件
- ueditor 编辑器增加css样式_Web入侵之利用编辑器漏洞入侵
- JS Location
- Ridge regression
- 计算机毕业设计抄袭,研究生毕业设计抄袭他人作品,通报来了!
- 文件一键上传、汉字转拼音、excel文件上传下载功能模块的实现
- CVPR2021 | CVPR2021最全整理,CVPR2021下载链接,CVPR2021全部论文代码
- 移动mm 话费支付接入过程(ane)
- 计算机机械硬盘寿命,有问有答:电脑的机械硬盘和固态硬盘哪个寿命更长?
- 【数据库实验】实验四 基于嵌入SQL的综合应用编程(基于QSqlTableModel实现)
- swift Locale
- 【office考试】Office办公软件考试试题题目
- numpy序列预处理dna序列_使用机器学习和Python揭开DNA测序神秘面纱
- java 标注 废弃,Python标记函数或类为废弃(deprecated)并在Pychram或Idea中检测提示删除线...
- 浅谈oracle树状结构层级查询测试数据