首页 > Java > java教程 > Java 中的 HashMap、LinkedHashMap 和 TreeMap:主要区别是什么?

Java 中的 HashMap、LinkedHashMap 和 TreeMap:主要区别是什么?

Linda Hamilton
发布: 2024-12-18 07:57:10
原创
204 人浏览过

HashMap, LinkedHashMap, and TreeMap in Java: What are the Key Differences?

探索 HashMap、LinkedHashMap 和 TreeMap 之间的区别

在 Java 中,这三种数据结构提供了不同的组织和访问数据的方法,每一个都有其独特的

HashMap:

HashMap 优先考虑效率,可以快速检索和存储数据。它不维护任何特定的顺序,而是专注于实现哈希表,为大多数操作提供恒定时间的性能。

LinkedHashMap:

LinkedHashMap 结合了以下优点HashMap和LinkedList,保留元素的插入顺序。它采用双链表结构,允许快速有序地访问数据。

TreeMap:

TreeMap 提供排序接口,以升序维护键命令。它依赖于红黑树数据结构,该结构允许查找、插入和删除元素等操作的对数时间复杂度。

Java 中的哈希表:

不再常用的哈希表早于 Java 中的 HashMap,并且有许多相似之处,即它们基于哈希的实现。它们是同步的,确保了线程安全,但代价是额外的开销。

示例:

考虑以下代码片段,它说明了三个输出的差异结构:

Map<String, String> m1 = new HashMap<>();
SortedMap<String, String> sm = new TreeMap<>();
LinkedHashMap<String, String> lm = new LinkedHashMap<>();

// Insert elements into all three maps
m1.put("map", "HashMap");
m1.put("schildt", "java2");
m1.put("mathew", "Hyden");
m1.put("schildt", "java2s");

sm.put("map", "TreeMap");
sm.put("schildt", "java2");
sm.put("mathew", "Hyden");
sm.put("schildt", "java2s");

lm.put("map", "LinkedHashMap");
lm.put("schildt", "java2");
lm.put("mathew", "Hyden");
lm.put("schildt", "java2s");

// Output the keysets and values from each map
print(m1.keySet());
print(m1.values());

print(sm.keySet());
print(sm.values());

print(lm.keySet());
print(lm.values());
登录后复制

输出:

HashMap(无序):

[map, schildt, mathew, schildt]
[HashMap, java2, Hyden, java2s]
登录后复制

TreeMap (排序):

[map, mathew, schildt, schildt]
[TreeMap, Hyden, java2, java2s]
登录后复制

LinkedHashMap (插入排序):

[map, schildt, mathew, schildt]
[LinkedHashMap, java2, Hyden, java2s]
登录后复制

以上是Java 中的 HashMap、LinkedHashMap 和 TreeMap:主要区别是什么?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板