文档

使用键索引进行读写

当从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.在地图m18是价值的关键吗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 '

另请参阅

|||

相关的话题

这个话题有用吗?