java中谁的hashmap.get或treemap.get更快

java中谁的hashmap.get或treemap.get更快,java,collections,Java,Collections,我在某处读到了HashMap.get(object)比TreeMap.get(object)快。但我的问题是,为什么他速度更快,即使他们两人在检索对象时都会使用哈希函数 TreeMap是Map接口的二进制搜索树实现。因此,任何查找操作都需要O(logN)时间 另一方面,HashMap使用密钥的hashCode()。由于每个bin都有一个由一个小常量绑定的预期条目数,因此查找需要O(1)时间,这比O(logN)要快,简单到,HashMapput/get方法使用hashCode()和equals()

我在某处读到了
HashMap.get(object)
TreeMap.get(object)
快。但我的问题是,为什么他速度更快,即使他们两人在检索
对象时都会使用哈希函数

TreeMap
Map
接口的二进制搜索树实现。因此,任何查找操作都需要
O(logN)
时间


另一方面,
HashMap
使用密钥的
hashCode()。由于每个bin都有一个由一个小常量绑定的预期条目数,因此查找需要
O(1)
时间,这比
O(logN)

要快,简单到,
HashMap
put/get
方法使用
hashCode()
equals()
方法,而
TreeMap
则使用
Comparable或Comparator
使用某种比较机制

还有一点


HashMap
更省时。
TreeMap
更节省空间。

TreeMap
不使用哈希。请看: