【发布时间】:2018-06-01 17:00:51
【问题描述】:
在某处我读到HashMap.get(object) 比TreeMap.get(object) 快。但我的问题是为什么他在检索object 时甚至都可以处理散列函数的速度更快。
【问题讨论】:
-
TreeMap不使用散列。
标签: java collections
在某处我读到HashMap.get(object) 比TreeMap.get(object) 快。但我的问题是为什么他在检索object 时甚至都可以处理散列函数的速度更快。
【问题讨论】:
TreeMap 不使用散列。
标签: java collections
TreeMap 是Map 接口的二叉搜索树实现。因此任何查找操作都需要O(logN) 时间。
另一方面,HashMap 使用密钥的hashCode() 在恒定时间内定位包含密钥的 bin。由于每个 bin 都有一个由一个小常数限制的预期条目数,因此查找需要 O(1) 时间,这比 O(logN) 快。
【讨论】:
就像HashMap put / get 方法使用hashCode() 和equals() 方法一样简单,而TreeMap 使用Comparable or Comparator 的一些比较机制。
还有一点,
HashMap 更省时。 TreeMap 更节省空间。
【讨论】: