HashMap和TreeMap有什么区别? [重复]

问题

这个问题在这里已有答案:

  • HashMap,LinkedHashMap和TreeMap 16答案之间的区别

我开始学习Java。我什么时候在TreeMap上使用HashMap?


#1 热门回答(206 赞)

TreeMap是aSortedMap的一个示例,这意味着可以对键的顺序进行排序,并且当遍历键时,你可以预期它们将按顺序排列。

另一方面,HashMap,没有这样的保证。因此,当迭代aHashMap的键时,你无法确定它们的顺序。

HashMap一般会更高效,所以每当你不关心键的顺序时就使用它。


#2 热门回答(54 赞)

HashMap由哈希表实现,而TreeMapRed-Black tree实现。 HashMapTreeMap之间的主要区别实际上反映了aHash和aBinary Tree之间的主要区别,也就是说,在迭代时,TreeMap保证可以由元素的compareTo()方法或TreeMap的构造函数中设置的比较器确定的键顺序。

看看following diagram

enter image description here


#3 热门回答(32 赞)

总结一下:

  • HashMap:查找数组结构,基于hashCode(),equals()实现,O(1)运行时复杂度,用于插入和搜索,未排序
  • TreeMap:树形结构,基于compareTo()实现,O(log(N))运行时复杂度用于插入和搜索,排序

取自:HashMap vs. TreeMap