在某处我读到HashMap.get(object)
的速度比TreeMap.get(object)
快。但我的问题是为什么他更快,即使在检索object
时两者都会使用散列函数。
答案 0 :(得分:5)
TreeMap
是Map
接口的二叉搜索树实现。因此,任何查找操作都需要O(logN)
时间。
另一方面,HashMap
使用密钥的hashCode()
在常量时间内找到包含密钥的bin。由于每个bin具有由小常量限制的预期条目数,因此查找需要O(1)
时间,这比O(logN)
更快。
答案 1 :(得分:1)
很简单,HashMap
put / get
方法使用hashCode()
和equals()
方法,而TreeMap
使用Comparable or Comparator
使用某种比较机制
还有一点,
HashMap
更节省时间。 TreeMap
节省空间。