我是 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) 查找和仅依赖于equals
和hashCode
,保证为所有实现Java 对象;TreeMap
为您提供对 map 条目的排序迭代(还有更多内容 - 请参阅NavigableMap
),但需要比较策略并且插入和查找速度较慢 – O( logN) – 比HashMap
;LinkedHashMap
在遍历条目时保留插入/访问顺序。
SortedMap
实现提供了一些很棒的功能,例如 headMap
和 tailMap
。 NavigableMap
实现提供了更多功能,并且对于假定已排序键的操作具有出色的性能。
此外还有 java.util.concurrent
映射实现,例如 ConcurrentHashMap
,它提供了出色的并发性能和原子获取/放置操作。
关于java: map 动物园,选择什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13974115/