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基本使用相关推荐

  1. 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 ...

  2. Map的分类和不同的应用场景

    java为数据结构中的映射定义了一个接口java.util.Map; 它有四个实现类,分别是HashMap,Hashtable,LinkedHashMap和TreeMap 可能很多人只使用过HashM ...

  3. java1.8新增超实用Map方法——Map.getOrDefault()和Map.value()方法详解

    1. Map.getOrDefault() 翻译一下官方解释: java.util.Map<K, V> V getOrDefault(Object key, V defaultValue) ...

  4. Go 学习笔记(67)— Go 并发安全字典 sync.Map

    1. 并发不安全的 map Go 语言中的 map 在并发情况下,只读是线程安全的,同时读写是线程不安全的. 换句话说,在同一时间段内,让不同 goroutine 中的代码,对同一个字典进行读写操作是 ...

  5. Python 常用内置函数map、zip、filter、reduce、enumerate

    Python 中有许多非常实用的内置函数,通过这些函数我们可以方便的实现某些功能,下面就列举一些常用的内置函数. 1. map() 函数 map() 可以根据提供的函数对指定序列做映射,它接受一个函数 ...

  6. 将request中的所有参数存放到自定义的map中

    /*** <获取参数map>* * @return 参数map* @throws Exception */protected Map<String, Object> getPa ...

  7. Map再整理,从底层源码探究HashMap

    前言 本文为对Map集合的再一次整理.内容包括:Map HashMap LinkedHashMap TreeHashMap HashTable ConcurrentHashMap Map Map< ...

  8. Java集合详解之Map

    一.首先看看集合框架体系图 从图中可以看到,Map接口扩展了Iterator接口,关于Iterator接口详解请移步:Iterator接口详解 二.Map是什么? Map<k,v>使用键值 ...

  9. 网络模型mAP计算实现代码

    网络模型mAP计算实现代码 一.mAP精度计算 这里首先介绍几个常见的模型评价术语,现在假设我们的分类目标只有两类,计为正例(positive)和负例(negtive)分别是: 1)True posi ...

最新文章

  1. 去年秋招,我学长拿了7个Offer,他是怎么做到的?
  2. 10 家世界顶级的公司都在用 Python 做什么?
  3. 我是如何把VC6一直用到2016年的
  4. scala字符替换_如何替换Scala中的“坏”字符?
  5. 苹果支付招聘业务开发经理 需有加密货币支付工作经验
  6. python中msg是什么意思,使用python解析Outlook .msg文件
  7. ueditor 编辑器增加css样式_Web入侵之利用编辑器漏洞入侵
  8. JS Location
  9. Ridge regression
  10. 计算机毕业设计抄袭,研究生毕业设计抄袭他人作品,通报来了!
  11. 文件一键上传、汉字转拼音、excel文件上传下载功能模块的实现
  12. CVPR2021 | CVPR2021最全整理,CVPR2021下载链接,CVPR2021全部论文代码
  13. 移动mm 话费支付接入过程(ane)
  14. 计算机机械硬盘寿命,有问有答:电脑的机械硬盘和固态硬盘哪个寿命更长?
  15. 【数据库实验】实验四 基于嵌入SQL的综合应用编程(基于QSqlTableModel实现)
  16. swift Locale
  17. 【office考试】Office办公软件考试试题题目
  18. numpy序列预处理dna序列_使用机器学习和Python揭开DNA测序神秘面纱
  19. java 标注 废弃,Python标记函数或类为废弃(deprecated)并在Pychram或Idea中检测提示删除线...
  20. 浅谈oracle树状结构层级查询测试数据

热门文章

  1. c++构造函数成员初始化中赋值和初始化列表两种方式的区别
  2. CUDA并行算法系列之FFT快速卷积
  3. this指针的用法详解
  4. 原:开辟内存时,可以以结构体为单位,这样测试,是对的吧?
  5. latex二元关系符号
  6. vivado实现基本D触发器
  7. python 新闻分析系统 源码_python 源码分析之类型系统
  8. MySql遇到字段中有空格
  9. [一维粒子模拟 version3.6]成功实现初次诊断函数
  10. python第一个发行版本由c语言实现_【Python】讲真,你知道Python咋来的吗?