Main Content

containers.Map

将唯一键映射到值的对象

说明

Map 对象是允许您使用对应键检索值的数据结构体。键可以是实数或字符向量。因此,相对于必须为正整数的数组索引,键会使数据访问变得更灵活。值可以是标量数组或非标量数组。

创建对象

描述

注意

推荐使用 dictionary 而不是 containers.Map,因为它接受更多数据类型作为键和值,并能提供更好的性能。 (自 R2022b 起)

示例

M = containers.Map(keySet,valueSet) 创建一个 Map 对象,其中包含来自 keySet 的键,每个键映射到 valueSet 中的一个对应值。输入参数 keySetvalueSet 必须具有相同数量的元素,而 keySet 中的元素必须唯一。

示例

M = containers.Map(keySet,valueSet,'UniformValues',isUniform),其中 isUniformfalse,指定 valueSet 中的值不必是统一的。isUniform 的默认值是 true。如果 valueSet 中的所有值都是数据类型相同的标量,或者都是字符向量,则它们是统一的。

示例

M = containers.Map('KeyType',kType,'ValueType',vType) 创建一个空的 Map 对象,并指定稍后可以添加到其中的键和值的数据类型。您可以切换 'KeyType''ValueType' 名称-值对组参数的顺序,但这两个名称-值对组都是必需的。

M = containers.Map 创建一个空 Map 对象。

输入参数

全部展开

键,指定为数值数组、字符向量元胞数组或字符串数组。

如果使用字符串数组指定键,则 containers.Map 函数会对键进行转换并将其存储为字符向量。由于此转换,输出 Map 对象的 KeyType 属性将被设置为 'char'

值,指定为数组。

valueSet 中的统一值的指示符,指定为 true (1) 或 false (0)

要添加到空 Map 对象中的键的数据类型,指定为字符向量。您可以将 kType 指定为下表中的任何数据类型,因此键可以是字符向量,也可以是数值标量。

kType

键的数据类型和大小

'char'(默认值)

字符向量

'double'

双精度标量

'single'

单精度标量

'int32'

32 位有符号整数标量

'uint32'

32 位无符号整数标量

'int64'

64 位有符号整数标量

'uint64'

64 位无符号整数标量

要添加到空 Map 对象中的值的数据类型,指定为字符向量。您可以将 vType 指定为下表中的任何数据类型。

vType

值的数据类型和大小

'any'(默认值)

任何数据类型的数组

'char'

字符向量

'logical'

逻辑标量

'double'

双精度标量

'single'

单精度标量

'int8'

8 位有符号整数标量

'uint8'

8 位无符号整数标量

'int16'

16 位有符号整数标量

'uint16'

16 位无符号整数标量

'int32'

32 位有符号整数标量

'uint32'

32 位无符号整数标量

'int64'

64 位有符号整数标量

'uint64'

64 位无符号整数标量

属性

全部展开

此 属性 为只读。

Map 对象中的键-值对组的数量,指定为数值标量。

此 属性 为只读。

键的数据类型,指定为字符向量。

此 属性 为只读。

值的数据类型,指定为字符向量。

对象函数

isKey确定 Map 对象是否包含键
keys返回 Map 对象的键
lengthMap 对象中的键-值对组的数量
removeMap 对象中删除键-值对组
sizeMap 对象的大小
values返回 Map 对象的值

示例

全部折叠

创建一个 Map 对象,其中包含几个月中的降雨量数据。该映射包含 valueSet 中的四个值,键是 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

显示三月份的降雨量。您可以使用 'Mar' 作为键来检索三月份的值。

M('Mar')
ans = 197.6000

显示映射中的值的数量。您可以使用圆点表示法访问 Count 属性。

M.Count
ans = uint64
    4

创建一个 Map 对象,将员工代号作为键,将员工姓名作为值。

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

使用员工代号作为键来检索人名。

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

创建一个 Map 对象,其中包含患者的检查结果。对于每一位患者,其结果可能存储在数值数组中,也可能存储在文件中。您可以将数值数组和文件名作为值存储在同一映射中。要在同一个映射中存储数据类型不同的值,请指定 '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

显示与 Li 关联的数值数组。

M('Li')
ans = 1×2

    5.8000    7.3500

显示与 Sanchez 关联的文件名。如果该文件中包含数值,则您可以调用一个函数,将这些值读取到一个数组中。

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

创建一个空 Map 对象。指定稍后添加的键-值对组的数据类型。

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

  Map with properties:

        Count: 0
      KeyType: char
    ValueType: double

向映射中添加键-值对组。

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

        Count: 2
      KeyType: char
    ValueType: double

显示映射中现在包含的键和值。

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

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

扩展功能

版本历史记录

在 R2008b 中推出