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

Примечание

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

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

Используйте метод 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

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

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

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

ticketMap('A479GY')

ans =

Anna Latham

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

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

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

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;

Смотрите также

| | | | | |

Похожие темы