Java中HashMap和LinkedHashMap之间的区别
内容
HashMap和LinkedHashMap是彼此非常相似的类,用于创建地图。 HashMap类扩展了AbstractMap类,以使用哈希表将元素存储在地图中。 LinkedHashMap类根据条目的插入顺序维护地图中的条目。区分HashMap和LinkedHashMap的功能是 哈希图 不维护映射中存储条目的顺序。另一方面, LinkedHashMap 使用混合数据结构来维护插入它们的条目的顺序。在下面的比较表中,我探究了HashMap和LinkedHashMap之间的其他区别。
- 比较表
- 定义
- 关键差异
- 结论
比较表
比较基础 | 哈希图 | 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中输入了重复的键,它将用建议的新值替换该键的先前值,并返回旧值。如果没有使用重复的密钥并且没有进行任何替换,则该密钥始终返回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扩展了 哈希图 类,后来在JDK 4.0版中引入到HashMap中。作为HashMap类的子类,LinkedHashMap与HashMap类完全相同,包括构造函数和方法。但是,LinkedHashMap在保持映射中条目插入顺序的意义上有所不同。 LinkedHashMap用于存储地图的数据结构是 链表 和 哈希表. 除了HashMap继承的方法外,LinkedHashMap还引入了一种新方法,即 removeEldestEntry()。此方法用于删除地图中最旧的条目。 LinkedHashMap的默认容量为16,默认填充率为0.75,这也类似于HashMap类。
LinkedHashMap的定义
- 最重要的区别是HashMap的插入顺序为 未保存 而LinkedHashMap的插入顺序为 保存完好的.
- HashMap用于存储地图元素的数据结构为 哈希表。另一方面,LinkedHashMap使用的数据结构是 链表 和 哈希表.
- HashMap类扩展 抽象图 类并实现 地图 接口。但是,LinkedHashMap类是的子类。 哈希图 类,即LinkedHashMap类扩展了HashMap类。
- HashMap类是在 JDK 2.0 版。 LinkedHashMap类在稍后介绍。 JDK 4.0 版。
- 相对而言,LinkedHashMap类比HashMap具有更多的开销,因为它必须维护插入到地图中的元素的顺序。
结论:
只有在我们担心插入到地图中的元素的顺序时,才必须使用LinkedHashMap。