主要内容

使用键索引进行读写

从Map读取时,使用您已经定义并与特定值关联的相同键。向Map中写入新条目需要为每个条目提供要存储的值和一个键。

请注意

对于大型Map,键和值方法使用大量内存,因为它们的输出是单元格数组。

阅读地图

在构建并填充了Map之后,就可以开始使用它存储和检索数据了。使用Map的方式与使用数组的方式相同,只是不限制使用整数索引。查找值的通用语法()为给定的键(keyN)。如果键是字符向量,请将其括在单引号中:

valueN = mapObj(keyN);

从地图开始ticketMap

ticketMap = containers.Map(…{' 2r175 ', ' b7398 ', ' a479gy ', ' nz1452 '},…{“詹姆斯·恩莱特”,“卡尔·海恩斯”,“莎拉·莱瑟姆”,……布拉德利•里德的});

你可以用适当的键索引到Map中找到任何单个值:

乘客= James Enright

找到持票人A479GY

请乘客%s到服务台来好吗?\ n’,……ticketMap('A479GY')乘客Sarah Latham请到服务台来好吗?

要访问多个键的值,请使用方法,指定单元格数组中的键:

values(ticketMap, {'2R175', 'B7398'}) ans = 'James Enright' 'Carl Haynes' '

映射容器只支持标量索引。金宝app您不能像使用其他MATLAB一样使用冒号操作符访问一系列键®类。例如,以下语句会抛出一个错误:

ticketMap(“2 r175”:“B7398”)ticketMap (:)

添加键/值对

与其他数组类型不同,Map中的每个条目由两项组成:值和它的键。在向Map写入新值时,还必须提供它的键。此键的类型必须与Map中的任何其他键一致。

使用以下语法向Map中插入额外的元素:

existingMapObj(newKeyName) = newValue;

从地图开始ticketMap

ticketMap = containers.Map(…{' 2r175 ', ' b7398 ', ' a479gy ', ' nz1452 '},…{“詹姆斯·恩莱特”,“卡尔·海恩斯”,“莎拉·莱瑟姆”,……布拉德利•里德的});

元素中再添加两个条目ticketMap地图。验证ticketMap现在有六个键/值对:

ticketMap('947F4') = 'Susan Spera';ticketMap('417R93') = '帕特里夏·休斯';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' 'Bradley Reid'

用串联构建地图

可以使用连接向Map组中添加键/值对。Map对象的连接不同于其他类。MATLAB不是构建Map对象的向量,而是返回一个Map,其中包含来自每个贡献Map对象的键/值对。

Map对象的连接规则如下:

  • 只允许Map对象的垂直向量。不能创建m × n数组或Map对象的水平向量。出于这个原因,vertcat支持M金宝appap对象,但不支持horzcat

  • 连接的每个Map中的所有键必须属于相同的类。

  • 您可以使用不同数量的键/值对组合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 '

另请参阅

|||

相关的话题