Main Content

containers.Map

Object that maps unique keys to values

Description

A Map object is a data structure that allows you to retrieve values using a corresponding key. Keys can be real numbers or character vectors. As a result, they provide more flexibility for data access than array indices, which must be positive integers. Values can be scalar or nonscalar arrays.

Creation

Description

Note

dictionary is recommended over containers.Map because it accepts more data types as keys and values and provides better performance. (since R2022b)

M = containers.Map(keySet,valueSet) creates a Map object that contains keys from keySet, each mapped to a corresponding value from valueSet. The input arguments keySet and valueSet must have the same number of elements, with keySet having elements that are unique.

example

M = containers.Map(keySet,valueSet,'UniformValues',isUniform), where isUniform is false, specifies that the values in valueSet do not need to be uniform. The default value of isUniform is true. The values in valueSet are uniform when they are all scalars that have the same data type, or when they are all character vectors.

example

M = containers.Map('KeyType',kType,'ValueType',vType) creates an empty Map object and specifies the data types of the keys and values you can add to it later. You can switch the order of the 'KeyType' and 'ValueType' name-value pair arguments, but both name-value pairs are required.

example

M = containers.Map creates an empty Map object.

Input Arguments

expand all

Keys, specified as a numeric array, cell array of character vectors, or string array.

If you specify keys using a string array, then the containers.Map function converts the keys and stores them as character vectors. Because of this conversion, the KeyType property of the output Map object is set to 'char'.

Values, specified as an array.

Indicator of uniform values in valueSet, specified as true (1) or false (0).

Data type of the keys to be added to an empty Map object, specified as a character vector. You can specify kType as any of the data types in the table, so that keys are either character vectors or numeric scalars.

kType

Data Type and Size of Key

'char' (default)

Character vector

'double'

Double scalar

'single'

Single scalar

'int32'

32-bit signed integer scalar

'uint32'

32-bit unsigned integer scalar

'int64'

64-bit signed integer scalar

'uint64'

64-bit unsigned integer scalar

Data type of the values to be added to an empty Map object, specified as a character vector. You can specify vType as any of the data types in the table.

vType

Data Type and Size of Value

'any' (default)

Array that has any data type

'char'

Character vector

'logical'

Logical scalar

'double'

Double scalar

'single'

Single scalar

'int8'

8-bit signed integer scalar

'uint8'

8-bit unsigned integer scalar

'int16'

16-bit signed integer scalar

'uint16'

16-bit unsigned integer scalar

'int32'

32-bit signed integer scalar

'uint32'

32-bit unsigned integer scalar

'int64'

64-bit signed integer scalar

'uint64'

64-bit unsigned integer scalar

Properties

expand all

This property is read-only.

Number of key-value pairs in the Map object, specified as a numeric scalar.

This property is read-only.

Data type of the keys, specified as a character vector.

This property is read-only.

Data type of the values, specified as a character vector.

Object Functions

isKeyDetermine if Map object contains key
keysReturn keys of Map object
lengthNumber of key-value pairs in Map object
removeDelete key-value pairs from Map object
sizeSize of Map object
valuesReturn values of Map object

Examples

collapse all

Create a Map object that contains rainfall data for several months. The map contains the four values in valueSet, and the keys are the four month names in keySet.

keySet = {'Jan','Feb','Mar','Apr'};
valueSet = [327.2 368.2 197.6 178.4];
M = containers.Map(keySet,valueSet)
M = 
  Map with properties:

        Count: 4
      KeyType: char
    ValueType: double

Display the rainfall for March. You can retrieve the value for March by using 'Mar' as the key.

M('Mar')
ans = 
197.6000

Display the number of values in the map. You can access the Count property using dot notation.

M.Count
ans = uint64

4

Create a Map object with identification numbers as keys and employee names as values.

ids = [437 1089 2362];
names = {'Lee, N.','Jones, R.','Sanchez, C.'};
M = containers.Map(ids,names)
M = 
  Map with properties:

        Count: 3
      KeyType: double
    ValueType: char

Retrieve a name using an identification number as a key.

M(437)
ans = 
'Lee, N.'

Create a Map object that contains test results for patients. For any patient, the results might be in either a numeric array or in a file. You can store numeric arrays and file names as values in the same map. To store values that do not have the same data type in the same map, specify 'UniformValues',false.

keySet = {'Li','Jones','Sanchez'};
testLi = [5.8 7.35];
testJones = [27 3.92 6.4 8.21];
testSanchez = 'C:\Tests\Sanchez.dat';

valueSet = {testLi,testJones,testSanchez};
M = containers.Map(keySet,valueSet,'UniformValues',false)
M = 
  Map with properties:

        Count: 3
      KeyType: char
    ValueType: any

Display the numeric array associated with Li.

M('Li')
ans = 1×2

    5.8000    7.3500

Display the file name associated with Sanchez. If the file contains numeric values, you could then call a function to read those values into an array.

M('Sanchez')
ans = 
'C:\Tests\Sanchez.dat'

Create an empty Map object. Specify the data types for key-value pairs added later.

M = containers.Map('KeyType','char','ValueType','double')
M = 

  Map with properties:

        Count: 0
      KeyType: char
    ValueType: double

Add key-value pairs to the map.

M('Jan') = 327.2;
M('Feb') = 368.2;
M
M = 
  Map with properties:

        Count: 2
      KeyType: char
    ValueType: double

Display the keys and values that the map now contains.

keys(M)
ans = 1x2 cell
    {'Feb'}    {'Jan'}

values(M)
ans=1×2 cell array
    {[368.2000]}    {[327.2000]}

Extended Capabilities

Version History

Introduced in R2008b