Изменение ключей и значений на карте

Примечание

Следует иметь в виду, что если у вас есть несколько указателей на карту, изменение указателя также вносит изменения в исходную карту. См. раздел «Изменение копии карты» ниже.

Удаление ключей и значений с карты

Используйте remove метод для удаления всех записей из карты. При вызове этого метода задайте Map имя объекта и имя ключа для удаления. MATLAB® удаляет ключ и связанное с ним значение из карты.

Синтаксис метода удаления:

remove(mapName, 'keyname');

Начните с Map 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

Смените имя пассажира на Anna Latham путем перезаписи исходного значения для A479GY ключ:

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

Проверьте изменение:

ticketMap('A479GY')

ans =

Anna Latham

Изменение ключей

Чтобы изменить существующий ключ, сохраняя при этом то же значение, сначала удалите и ключ, и его значение из Map. Затем создайте новую запись, на этот раз с исправленным именем ключа.

Измените номер билета, принадлежащего пассажиру Джеймсу Энрайту:

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 является указатель объекта, вы должны быть осторожны при создании копий Карты. Имейте в виду, что, копируя объект Map, вы действительно просто создаете другой указатель на тот же объект. Любые изменения, внесенные в этот указатель, также применяются к исходной карте.

Сделайте копию ticketMap Карта. Напишите в эту копию и заметьте, что изменение применяется к самому исходному объекту Map:

copiedMap = ticketMap;

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

ans =

unidentified person

Очистка:

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

См. также

| | | | | |

Похожие темы