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
不使用哈希。请看: