java: map 动物园,选择什么

标签 java map hashmap hashtable linkedhashmap

我是 Java 世界的新手(因为我主要用 C/C++ 编写)。我在我的应用程序中使用 map 。 由于 java.util.Map 是抽象的,我需要实例化它的实现。通常我使用 HashMap 像:

Map<String, MyClass> x = new HashMap<>();

但在 java 文档中我发现了很多其他的实现,比如 TreeMap, LinkedHashMap, HashTable 等。我想知道我是否可以继续盲目地使用 HashMap,否则这些 Map 实现之间存在任何重要差异。

要点的简要列表就可以了。 谢谢。

最佳答案

  • 永远不要为 Hashtable 烦恼,它是 Java 1.0 的产物;
  • HashMap 是通用默认值,因为 O(1) 查找和仅依赖于 equalshashCode,保证为所有实现Java 对象;
  • TreeMap 为您提供对 map 条目的排序迭代(还有更多内容 - 请参阅 NavigableMap),但需要比较策略并且插入和查找速度较慢 – O( logN) – 比 HashMap;
  • LinkedHashMap 在遍历条目时保留插入/访问顺序。

SortedMap 实现提供了一些很棒的功能,例如 headMaptailMapNavigableMap 实现提供了更多功能,并且对于假定已排序键的操作具有出色的性能。

此外还有 java.util.concurrent 映射实现,例如 ConcurrentHashMap,它提供了出色的并发性能和原子获取/放置操作。

关于java: map 动物园,选择什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13974115/

相关文章:

Java WebStart dll 未加载

javascript - 将图像添加到 openlayers map

java - 在 HashMap 实现中调整数组表的大小

java - JPanel组件绘制顺序

java - 如何在 Java 中不使用正则表达式来处理不区分大小写的字符串替换

c++ - 结合映射和字符串数组 C++

api - 政治边界 map 类似于谷歌图表, "clickable"个国家

java - servlet ArrayList 和 HashMap

java - 如何将 "Hashmap values of List type"转换成Set?

java - Floor(X) 模 X 等于 X?