当从Map中读取数据时,使用已定义并与特定值关联的相同键。向Map写入新条目需要提供要存储的值和每个值的键。
对于大型Map,键和值方法使用大量内存,因为它们的输出是单元格数组。
在构造并填充了Map之后,就可以开始使用它来存储和检索数据了。使用Map的方式与使用数组的方式相同,只是不限制使用整数索引。查找值的一般语法(家
),以获取给定的密钥(keyN
)。如果键是字符向量,请将其用单引号括起来:
家= mapObj (keyN);
从地图开始ticketMap
:
ticketMap = containers.Map(…{' 2r175 ', ' b7398 ', ' a479gy ', ' nz1452 '},…{'James Enright', 'Carl Haynes', 'Sarah Latham',…布拉德利•里德的});
你可以用适当的键在Map中索引任何一个值:
乘客= James Enright
找到持有票的人A479GY
:
旅客请到服务台来好吗?\ n’,……旅客萨拉·莱瑟姆请到服务台来好吗?
要访问多个键的值,使用值
方法,指定单元格数组中的键:
values(ticketMap, {'2R175', 'B7398'}) ans = 'James Enright' ' 'Carl Haynes')
映射容器仅支持标量索引。万博1manbetx不能像在其他MATLAB中那样使用冒号操作符访问一系列键®类。例如,下面的语句会抛出错误:
ticketMap(“2 r175”:“B7398”)ticketMap (:)
与其他数组类型不同,Map中的每个条目由两个项组成:值和键。向Map写入新值时,还必须提供它的键。此键在类型上必须与Map中的任何其他键一致。
使用以下语法向Map中插入额外的元素:
existingMapObj (newKeyName) = newValue;
从地图开始ticketMap
:
ticketMap = containers.Map(…{' 2r175 ', ' b7398 ', ' a479gy ', ' nz1452 '},…{'James Enright', 'Carl Haynes', 'Sarah Latham',…布拉德利•里德的});
添加两个更多的条目到ticketMap
地图。验证ticketMap
现在有六个键/值对:
ticketMap('947F4') = '苏珊·斯佩拉';ticketMap('417R93') = 'Patricia Hughes';ticketMap。Count ans = 6
列出所有的键和值ticketMap
:
keys(ticketMap), values(ticketMap) ans = '2R175' '417R93' '947F4' 'A479GY' 'B7398' 'NZ1452' ' ans = 'James Enright' 'Patricia Hughes' 'Susan Spera' 'Sarah Latham' 'Carl Haynes' '布拉德利里德' '
可以使用连接将键/值对分组添加到Map。Map对象的连接不同于其他类。MATLAB没有构建Map对象的向量,而是返回一个包含来自每个贡献Map对象的键/值对的单一Map。
连接Map对象的规则有:
只允许Map对象的垂直向量。不能创建m × n数组或Map对象的水平向量。由于这个原因,vertcat
为Ma万博1manbetxp对象提供支持,但不支持horzcat
.
连接的每个Map中的所有键必须属于同一个类。
可以使用不同数量的键/值对组合映射。结果是一个单独的Map对象,其中包含来自每个Map对象的键/值对:
tMap1 =容器。地图({'2R175', 'B7398', 'A479GY'}, ... {'James Enright', 'Carl Haynes', 'Sarah Latham'}); tMap2 = containers.Map({'417R93', 'NZ1452', '947F4'}, ... {'Patricia Hughes', 'Bradley Reid', 'Susan Spera'}); % Concatenate the two maps: ticketMap = [tMap1; tMap2];
这种连接的结果与前一节中构造的6元素Map相同:
ticketMap。Count ans = 6 keys(ticketMap), values(ticketMap) ans = '2R175' '417R93' '947F4' 'A479GY' 'B7398' 'NZ1452' ans = 'James Enright' 'Patricia Hughes' 'Susan Spera' 'Sarah Latham' 'Carl Haynes' 'Bradley Reid'
拼接不包括生成的Map对象中的重复键或它们的值。
在下面的例子中,两个对象m1
和平方米
用…的钥匙8
.在地图m1
,8
是价值的关键吗C
;在平方米
,它是价值的关键X
:
m1 =容器。地图({1, 5, 8}, {'A', 'B', 'C'}); m2 = containers.Map({8, 9, 6}, {'X', 'Y', 'Z'});
结合m1
和平方米
来形成一个新的Map对象,米
:
m = [m1;平方米);
生成的Map对象米
只有5个键/值对。值C被从连接中删除,因为它的键不是唯一的:
键(m),值(m) ans = [1] [5] [6] [8] [9] ans = ' A ' B ' Z ' ' X ' ' Y '