Java中HashMap和LinkedHashMap之间的区别

作者: Laura McKinney
创建日期: 2 四月 2021
更新日期: 10 可能 2024
Anonim
Difference between HashMap, LinkedHashMap and TreeMap | Java Tutorial for beginners | Core Java
视频: Difference between HashMap, LinkedHashMap and TreeMap | Java Tutorial for beginners | Core Java

内容


HashMap和LinkedHashMap是彼此非常相似的类,用于创建地图。 HashMap类扩展了AbstractMap类,以使用哈希表将元素存储在地图中。 LinkedHashMap类根据条目的插入顺序维护地图中的条目。区分HashMap和LinkedHashMap的功能是 哈希图 不维护映射中存储条目的顺序。另一方面, LinkedHashMap 使用混合数据结构来维护插入它们的条目的顺序。在下面的比较表中,我探究了HashMap和LinkedHashMap之间的其他区别。

  1. 比较表
  2. 定义
  3. 关键差异
  4. 结论

比较表

比较基础哈希图LinkedHashMap
基本的HashMap中的插入顺序不会保留。插入顺序保留在LinkedHashMap中。
数据结构HashMap使用HashTable来存储地图。LinkedHashMap使用HashTable和Linked List来存储地图。
扩展/执行HashMap扩展了AbstractMap并实现了Map接口。LinkedHashMap扩展了Hashmap。
HashMap是JDK 2.0中引入的。JDK 4.0中引入了LinkedHashMap。
高架相对较少的开销。相对而言,开销更大,因为它必须维护映射条目的顺序。

HashMap的定义

HashMap是用于创建地图的类。它实现 地图 接口。它还扩展了 抽象图 类,以便它可以使用哈希表将条目存储在地图中。地图的条目是 对,其中每个键与值相关联。条目中的键用于检索值,因此,键必须是唯一的。这就是为什么HashMap中不允许重复的键。但是映射的每个条目中的键可以具有不同的类型,即,由HashMap创建的映射中的键可以是异构的。 HashMap用于存储地图的数据结构是哈希表。

HashMap中条目的插入顺序不会保留。使用HashMap创建的地图中条目的插入是基于条目中的键所计算出的哈希码。如果错误地在HashMap中输入了重复的键,它将用建议的新值替换该键的先前值,并返回旧值。如果没有使用重复的密钥并且没有进行任何替换,则该密钥始终返回Null。让我们通过以下示例了解如何将条目添加到哈希映射。


Hashmap hm =新的Hashmap(); hm.put(“ Ajay”,275); hm.put(“ Vijay”,250); hm.put(“ Jonny”,150); hm.put(“ Jordan”,200); System.out.ln(hm); / *输出* / {Vijay = 250,Jonny = 150,Ajay = 275,Jordan = 200}

如上面的代码所示,您可以看到我创建了一个HashMap对象,并使用puts方法添加了条目;当我编辑HashMap对象时,条目的插入顺序不是ed。因此,您不能假装HashMap中条目的顺序将返回。 HashMap使用Map接口和AbstractMap类的所有方法,并且不引入任何新方法。它有自己的构造函数。哈希映射的默认容量为 16 默认填充率为 0.75.

LinkedHashMap的定义

LinkedHashMap也是用于创建地图的类。 LinkedHashMap扩展了 哈希图 类,后来在JDK 4.0版中引入到HashMap中。作为HashMap类的子类,LinkedHashMap与HashMap类完全相同,包括构造函数和方法。但是,LinkedHashMap在保持映射中条目插入顺序的意义上有所不同。 LinkedHashMap用于存储地图的数据结构是 链表哈希表.

除了HashMap继承的方法外,LinkedHashMap还引入了一种新方法,即 removeEldestEntry()。此方法用于删除地图中最旧的条目。 LinkedHashMap的默认容量为16,默认填充率为0.75,这也类似于HashMap类。

  1. 最重要的区别是HashMap的插入顺序为 未保存 而LinkedHashMap的插入顺序为 保存完好的.
  2. HashMap用于存储地图元素的数据结构为 哈希表。另一方面,LinkedHashMap使用的数据结构是 链表哈希表.
  3. HashMap类扩展 抽象图 类并实现 地图 接口。但是,LinkedHashMap类是的子类。 哈希图 类,即LinkedHashMap类扩展了HashMap类。
  4. HashMap类是在 JDK 2.0 版。 LinkedHashMap类在稍后介绍。 JDK 4.0 版。
  5. 相对而言,LinkedHashMap类比HashMap具有更多的开销,因为它必须维护插入到地图中的元素的顺序。

结论:

只有在我们担心插入到地图中的元素的顺序时,才必须使用LinkedHashMap。