Hashmap 与 TreeMap 的 Firebase 性能 [重复]

Posted

技术标签:

【中文标题】Hashmap 与 TreeMap 的 Firebase 性能 [重复]【英文标题】:Firebase Performance of Hashmap versus TreeMap [duplicate] 【发布时间】:2018-05-01 15:59:06 【问题描述】:

在我的 android 应用中,我使用 Firebase 数据库来存储数据。我想将一些值作为Map<String, Integer> 存储在 Firebase 数据库中。

当检索我的数据以在 Android UI 上显示时,我主要需要“按键排序”的数据。

我的问题是从性能的角度来看,我应该将 Map 声明为 Hashmap 还是 Treemap?例如喜欢

Map<String, Integer> myData = new Hashmap<>();

Map<String, Integer> myData = new Treemap<>();

在上述 2 个选项中,这将给我更好的数据检索性能。每个 Map 大小预计在 0 到 10,000 个条目的范围内。对于每个用户,我的数据库中可能有 5-11 个这样的地图。

我的问题是专门针对了解 Firebase 的性能,而不是关于 2 种地图类型之间差异的一般性问题。

【问题讨论】:

【参考方案1】:

Hashmap 和 Treemap 这两个类都实现了Map 接口。这两个类提供的功能基本相同,但这些类之间最重要的区别是条目迭代的顺序。

HashMap 不保证迭代顺序,并且在添加/删除新元素时它也可以完全改变。查找数组结构,基于 hashCode()、equals() 实现,插入和搜索的运行时复杂度为 O(1),未排序。

TreeMap 将根据其compareTo() 方法根据包含键的natural ordering 进行迭代。这也可以通过外部比较器来完成。它还实现了SortedMap 接口。树形结构,基于 compareTo() 实现,O(log(N)) 的插入和搜索运行时复杂度,排序。

除非您需要订购,否则请使用HashMapHashMap is faster!。但是正如您所说,您主要需要“按键排序”的数据,只需使用TreeMap

【讨论】:

以上是关于Hashmap 与 TreeMap 的 Firebase 性能 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Hashmap 与 TreeMap 的 Firebase 性能 [重复]

HashMap与TreeMap按照key和value排序

Java集合一 HashMap与HashSet

Java集合详解6:TreeMap和红黑树

Map接口,hashMap类,TreeMap类,WeakHashMap。

Java中HashMap和LinkedHashMap以及TreeMap的区别