Modify Keys and Values in Map

Note

Keep in mind that if you have more than one handle to a Map, modifying the handle also makes changes to the original Map. See Modify Copy of Map, below.

Remove Keys and Values from Map

Use the remove method to delete any entries from a Map. When calling this method, specify the Map object name and the key name to remove. MATLAB® deletes the key and its associated value from the Map.

The syntax for the remove method is

remove(mapName, 'keyname');

Start with the Map ticketMap :

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

Remove one entry (the specified key and its value) from the Map object:

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

ans = 

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

Modify Values

You can modify any value in a Map simply by overwriting the current value. The passenger holding ticket A479GY is identified as Sarah Latham:

ticketMap('A479GY')

ans =

Sarah Latham

Change the passenger's first name to Anna Latham by overwriting the original value for the A479GY key:

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

Verify the change:

ticketMap('A479GY')

ans =

Anna Latham

Modify Keys

To modify an existing key while keeping the value the same, first remove both the key and its value from the Map. Then create a new entry, this time with the corrected key name.

Modify the ticket number belonging to passenger 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.

Modify Copy of Map

Because ticketMap is a handle object, you need to be careful when making copies of the Map. Keep in mind that by copying a Map object, you are really just creating another handle to the same object. Any changes you make to this handle are also applied to the original Map.

Make a copy of the ticketMap Map. Write to this copy, and notice that the change is applied to the original Map object itself:

copiedMap = ticketMap;

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

ans =

unidentified person

Clean up:

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

See Also

| | | | | |

Related Topics