1.Map数据结构概述
一个Map容器是一种快速键查找数据结构,可以提供多种方法对其中的个体元素进行寻访。和MATLAB其他多数数据结构不同的是,一般的数据结构只能通过整数下标索引来进行寻访,而一个Map的索引可以是任何数值或者字符串。
对一个Map元素进行寻访的索引称为“键”(key)。这些键和其相对应的数据值存储在Map中。一个Map的每一个条目都包括唯一的键和相对应的值。图3-6所示是一个储存降雨量统计数据的Map,此Map中的一个索引是字符串“Aug”,对应于该月的降雨量37.3。
图3-6 月降雨量统计数据Map容器示意图
Map中所使用的键不必像其他数组那样限制在整数范围内。一个键可以是以下任何一种类型:
(2)单精度或者双精度实数标量;
(3)有符号或者无符号标量整数。
Map中存储的数据可以是任何类型,包括数值数组、结构数组、元胞数组、字符串、对象,或者是其他Map。需要指出的是:当Map中存储的是数值标量或者字符串数组的时候,该Map的内存的使用效率最高。
一个Map实际上是MATLAB中称作Map类的一个对象。它也是一个句柄对象,和其他的MATLAB句柄对象一样。
Map类的所有对象都具有3种属性。用户不能直接对这些属性进行修改,而只能通过作用于Map类的函数进行修改。具体属性说明见表3-9。
无符号64位整数,表示Map对象中存储的key/value对的总数
字符串,表示Map对象中包括的key的类型。KeyType可以是如下类型:双精度,单精度,有符号或者无符号32位或64位整数。如果用户添加了不支持的类型,如int8,MATLAB会自动将其转换为双精度类型
字符串,表示Map对象中包括的数据类型。如果一个Map中存储的是同一种类型的数据,那么ValueType就会被设置成该类型。例如Map中的数据全部为字符串数组,那么ValueType就是'char'。在其他情况下,ValueType的值是 'any'
查看Map属性的方法:在Map名字的后面加一个小数点'.',然后跟着写属性名即可,和结构数组的表现形式一样。例如,为了查看名为mapObj的Map中的键类型,可以使用如下命令:
Map是一个句柄对象,因此,如果用户创建了一个对象的副本,MATLAB并没有创建一个新的Map,而是创建一个指定的已有Map的新句柄。如果用户通过新句柄改变了Map中的内容,MATLAB同时也会将此改变应用于原始Map。但是用户可以在不影响原始Map的情况下删除新句柄。
表3-10中的函数可以应用于Map类,具体的用法将在后面的章节中介绍。
检查Map是否包含指定键
在Map中删除键和其相对应的值
Map是一个Map类中的对象,它由MATLAB中名为“容器”(containers)的一个包来定义,可以通过构造器函数来创建。在调用构造器创建Map对象的过程中,必须指定包的名字containers:
1.空Map对象的创建
当用户在调用Map构造器的时候,若未指定输入变量,那么MATLAB将会创建一个空Map对象。例如:
空Map对象的属性被设置为了默认属性:
一旦用户创建了空Map对象,之后就可以使用keys和values方法对其进行填充。
2.初始化后的Map对象创建
大多数情况下,用户希望在创建Map对象的时候就对其进行初始化,至少对部分键和值进行初始化。用户可以通过以下语法输入一个或多个keys/values对。
对于键和值为字符串的情况,应注意将字符串放到单引号里面。例如,创建一个包括字符串键的Map对象可以使用以下命令:
Map中的每个条目都包括两个部分:一个唯一的键和其相对应的值。可以通过使用keys函数查看Map中包括的所有键,同时还可以使用values函数查看所有的值。
创建一个名为tickets的Map对象,存储航空公司机票的编号和乘客名字。
身份认证 购VIP最低享 7
领优惠券(最高得80元)
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。