LabVIEW2019推出两种新的数据结构Map和Set,我们这篇文章先聊聊Map容器数据结构。

       Map容器数据结构有“Key”和“Value”两项组成,类似于变体的属性设置方法。Key值在Map数据结构中具有唯一性,具有Key和Value的一对一特性,在编程上提供快速通道。Map容器的内部数据组织,也是一种二叉树结构,其搜索速度是O(log n)。

java 如果往map中放相同的key会怎么样 map存储相同的key_数据结构

这里我们注意到“Key”和"Value"支持任意数据类型。

LabVIEW2019之前是没有Map数据类型的,我们要使用类似于这种二叉树的数据结构,只有变体的属性节点(设置属性、读取属性)。

java 如果往map中放相同的key会怎么样 map存储相同的key_数据_02

这里设置属性也是name是唯一的(字符串类型),Value支持任意数据类型。

1)数据插入速度比较:

1.1)Map容器插入:运行100000次,运行时间是83ms.

java 如果往map中放相同的key会怎么样 map存储相同的key_数据结构_03

1.2)变体属性插入:运行100000次,运行时间是142ms

java 如果往map中放相同的key会怎么样 map存储相同的key_搜索_04

对于相同的数据量Map容器的数据插入效率优于变体属性设置的方法。

2. 数据搜索速度对比:

我将原始数组各行拆分搜索,

2.1)Map容器搜索,如下图,50000次搜索,102ms.

java 如果往map中放相同的key会怎么样 map存储相同的key_数据结构_05

2.2)变体属性搜索,如下图,50000次搜索,181ms.

java 如果往map中放相同的key会怎么样 map存储相同的key_数据_06

对于相同的数据量Map容器的搜索速度优于变体的属性节点。

3. 数据删除速度对比

3.1)Map容器数据删除 50000次删除,111ms

java 如果往map中放相同的key会怎么样 map存储相同的key_搜索_07

3.2) 变体属性删除 50000次删除,181ms

java 如果往map中放相同的key会怎么样 map存储相同的key_搜索_08

删除速度,Map容器的删除速度优于变体属性的删除速度。

通过以上、数据插入、数据搜索、数据删除三个实验,Map容器的速度由于变体属性节点的速度。

除了上述速度优势外,Map函数包还提供了,数据大小、最大值最小值等函数。在同址操作框图上也也增加了Map容器数据类型的搜索。

java 如果往map中放相同的key会怎么样 map存储相同的key_数据结构_09

总结:

LabVIEW2019版本推出的Map容器数据结构,提供了key与value的一一对应的树形数据结构,其效率优于变体的属性设置方法。大家可以在写程序时灵活运用。