При чтении из Карты используйте те же ключи, которые вы задали и сопоставили с особыми значениями. Запись новых записей в Карту требует, чтобы вы предоставили значения, чтобы сохранить ключом для каждого.
Для большой Карты ключи и методы значения используют большую память, когда их выходные параметры являются массивами ячеек.
После того, как вы создали и заполнили свою Карту, можно начать использовать ее, чтобы сохранить и получить данные. Вы используете Карту таким же образом, что вы были бы массив, за исключением того, что вы не ограничиваетесь использованием целочисленных индексов. Общий синтаксис для поиска значения (valueN
) для данного ключа (keyN
) показывают здесь. Если ключ является вектором символов, заключите его в одинарные кавычки:
valueN = mapObj(keyN);
Запустите с карты ticketMap
:
ticketMap = containers.Map(... {'2R175', 'B7398', 'A479GY', 'NZ1452'}, ... {'James Enright', 'Carl Haynes', 'Sarah Latham', ... 'Bradley Reid'});
Можно найти любое одно значение путем индексации в Карту с соответствующим ключом:
passenger = ticketMap('2R175') passenger = James Enright
Найдите человека, который содержит билет A479GY
:
sprintf(' Would passenger %s please come to the desk?\n', ... ticketMap('A479GY')) ans = Would passenger Sarah Latham please come to the desk?
Чтобы получить доступ к значениям нескольких ключей, используйте метод values
, задавая ключи в массиве ячеек:
values(ticketMap, {'2R175', 'B7398'}) ans = 'James Enright' 'Carl Haynes'
Сопоставьте скаляр поддержки контейнеров, индексирующий только. Вы не можете использовать оператор двоеточия, чтобы получить доступ к области значений ключей, как вы можете с другими классами MATLAB®. Например, следующие операторы выдают ошибку:
ticketMap('2R175':'B7398') ticketMap(:)
В отличие от других типов массива, каждая запись в Карте состоит из двух элементов: значение и его ключ. Когда вы пишете новое значение в Карту, необходимо предоставить ее ключ также. Этот ключ должен быть сопоставим в типе с любыми другими ключами в Карте.
Используйте следующий синтаксис, чтобы вставить дополнительные элементы в Карту:
existingMapObj(newKeyName) = newValue;
Запустите с карты ticketMap
:
ticketMap = containers.Map(... {'2R175', 'B7398', 'A479GY', 'NZ1452'}, ... {'James Enright', 'Carl Haynes', 'Sarah Latham', ... 'Bradley Reid'});
Добавьте еще две записи в Карту ticketMap
. Проверьте, что ticketMap
теперь имеет шесть пар ключ/значение:
ticketMap('947F4') = 'Susan Spera'; 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' 'Bradley Reid'
Можно добавить пары ключ/значение в Карту в группах, использующих конкатенацию. Конкатенация объектов Карты отличается от других классов. Вместо того, чтобы создать вектор объектов Карты, MATLAB возвращает одну Карту, содержащую пары ключ/значение от каждого из способствующих объектов Карты.
Правила для конкатенации объектов Карты:
Только вертикальные векторы объектов Карты позволены. Вы не можете создать массив m на n или горизонтальный вектор объектов Карты. Поэтому vertcat
поддерживается для объектов Карты, но не horzcat
.
Все ключи в каждой конкатенируемой Карте должны иметь тот же класс.
Можно объединить Карты с различными количествами пар ключ/значение. Результатом является один объект Map, содержащий пары ключ/значение от каждого из способствующих объектов Карты:
tMap1 = containers.Map({'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 элементами, которая была создана в предыдущем разделе:
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
и m2
используют ключ 8
. В Карте m1
8
является ключом, чтобы оценить C
; в m2
это - ключ, чтобы оценить X
:
m1 = containers.Map({1, 5, 8}, {'A', 'B', 'C'}); m2 = containers.Map({8, 9, 6}, {'X', 'Y', 'Z'});
Объедините m1
и m2
, чтобы сформировать новый объект Map, m
:
m = [m1; m2];
Получившийся объект Map m
имеет только пять пар ключ/значение. Значение C было исключено из конкатенации, потому что ее ключ не был уникален:
keys(m), values(m) ans = [1] [5] [6] [8] [9] ans = 'A' 'B' 'Z' 'X' 'Y'
containers.Map
| isKey
| keys
| values