Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

修改映射中的键和值

注意

请记住,如果一个映射有多个句柄,修改该句柄还会更改原始映射。请参阅下面的修改映射副本

从映射中删除键和值

使用 remove 方法从映射中删除任何条目。调用该方法时,指定要删除的 Map 对象名称和键名称。MATLAB® 从映射中删除键及其相关值。

删除方法的语法是

remove(mapName, 'keyname');

从映射 ticketMap 开始:

ticketMap = containers.Map(...
    {'2R175', 'B7398', 'A479GY', 'NZ1452'}, ...
    {'James Enright', 'Carl Haynes', 'Sarah Latham', ...
     'Bradley Reid'});

Map 对象中删除一个条目(指定的键及其值):

remove(ticketMap, 'NZ1452');
values(ticketMap)

ans = 

    'James Enright'    'Sarah Latham'    'Carl Haynes'

修改值

您只能通过覆盖当前值修改映射中的任何值。持有机票 A479GY 的乘客确定为 Sarah Latham

ticketMap('A479GY')

ans =

Sarah Latham

通过覆盖 A479GY 键的原始值将乘客的名字更改为 Anna Latham

ticketMap('A479GY') = 'Anna Latham';

验证更改:

ticketMap('A479GY')

ans =

Anna Latham

修改键

要在修改键时保持值不变,请先从映射中删除键及其值。然后创建一个新条目,这次使用更正后的键名称。

修改属于乘客 James Enright 的机票编号:

remove(ticketMap, '2R175');
ticketMap('2S185') = 'James Enright';

k = keys(ticketMap);  v = values(ticketMap);
str1 = '   ''%s'' has been assigned a new\n';
str2 = '    ticket number: %s.\n';

fprintf(str1, v{1})
fprintf(str2, k{1})

 'James Enright' has been assigned a new
    ticket number: 2S185.

修改映射副本

由于 ticketMap 是句柄对象,因此您在创建映射副本时需要小心。请记住,复制映射对象时,您只是在创建同一对象的另一个句柄。对该句柄所做的任何更改也会应用于原始映射。

创建 ticketMap 映射的副本:向该副本写入内容时,请注意更改会应用于原始映射对象本身:

copiedMap = ticketMap;

copiedMap('AZ12345') = 'unidentified person';
ticketMap('AZ12345')

ans =

unidentified person

清理:

remove(ticketMap, 'AZ12345');
clear copiedMap;

另请参阅

| | | | | |

相关主题