【问题标题】:Firebase Performance of Hashmap versus TreeMap [duplicate]Hashmap 与 TreeMap 的 Firebase 性能 [重复]
【发布时间】: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 种地图类型之间差异的一般性问题。

【问题讨论】:

    标签: android firebase firebase-realtime-database


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2012-05-13
      • 1970-01-01
      • 1970-01-01
      • 2011-10-26
      • 2017-08-28
      • 2014-04-11
      • 1970-01-01
      • 1970-01-01
      • 2010-11-25
      相关资源
      最近更新 更多