java中谁更快hashmap.get或treemap.get [重复]

Posted

技术标签:

【中文标题】java中谁更快hashmap.get或treemap.get [重复]【英文标题】:who is faster hashmap.get or treemap.get in java [duplicate] 【发布时间】:2018-06-01 17:00:51 【问题描述】:

在某处我读到HashMap.get(object)TreeMap.get(object) 快。但我的问题是为什么他在检索object 时甚至都可以处理散列函数的速度更快。

【问题讨论】:

TreeMap 不使用散列。 或许看看:***.com/questions/7057430/treemap-or-hashmap-faster 【参考方案1】:

TreeMapMap 接口的二叉搜索树实现。因此任何查找操作都需要O(logN) 时间。

另一方面,HashMap 使用密钥的hashCode() 在恒定时间内定位包含密钥的 bin。由于每个 bin 都有一个由一个小常数限制的预期条目数,因此查找需要 O(1) 时间,这比 O(logN) 快。

【讨论】:

【参考方案2】:

就像HashMap put / get 方法使用hashCode()equals() 方法一样简单,而TreeMap 使用Comparable or Comparator 的一些比较机制。

还有一点,

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

【讨论】:

以上是关于java中谁更快hashmap.get或treemap.get [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Java 文档类链接和超链接

如何在Java中访问嵌套的HashMaps?

Java - HashMap 多线程安全解析

使用 Comparator.comparing(HashMap::get) 作为比较器时的意外行为

Java基础中map接口和实现类

Java:更快的重载或 if/else