问题
这个问题在这里已有答案:
- HashMap,LinkedHashMap和TreeMap 16答案之间的区别
我开始学习Java。我什么时候在TreeMap上使用HashMap?
#1 热门回答(206 赞)
TreeMap
是aSortedMap
的一个示例,这意味着可以对键的顺序进行排序,并且当遍历键时,你可以预期它们将按顺序排列。
另一方面,HashMap
,没有这样的保证。因此,当迭代aHashMap
的键时,你无法确定它们的顺序。
HashMap
一般会更高效,所以每当你不关心键的顺序时就使用它。
#2 热门回答(54 赞)
HashMap
由哈希表实现,而TreeMap
由Red-Black tree
实现。 HashMap
和TreeMap
之间的主要区别实际上反映了aHash
和aBinary Tree
之间的主要区别,也就是说,在迭代时,TreeMap保证可以由元素的compareTo()方法或TreeMap的构造函数中设置的比较器确定的键顺序。
#3 热门回答(32 赞)
总结一下:
- HashMap:查找数组结构,基于hashCode(),equals()实现,O(1)运行时复杂度,用于插入和搜索,未排序
- TreeMap:树形结构,基于compareTo()实现,O(log(N))运行时复杂度用于插入和搜索,排序