首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Hashmap与TreeMap的防火墙性能

Hashmap与TreeMap的防火墙性能
EN

Stack Overflow用户
提问于 2017-11-17 19:33:37
回答 1查看 163关注 0票数 1

在我的Android应用程序中,我使用Firebase数据库来存储数据。我希望将一些值作为Map<String, Integer>存储在Firebase数据库中。

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

我的问题是,从性能的角度来看,应该将Map声明为Hashmap还是树状地图?例如:

代码语言:javascript
运行
复制
Map<String, Integer> myData = new Hashmap<>();

代码语言:javascript
运行
复制
Map<String, Integer> myData = new Treemap<>();

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

我的问题是专门针对了解Firebase的性能,而不是一个关于两个映射类型之间的差异的一般性问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-17 20:22:23

两个类、哈什图树状地图都实现了Map接口。这两个类提供的功能基本相同,但这些类之间最重要的区别是通过条目进行迭代的顺序。

  • HashMap没有提供关于迭代顺序的保证,而且当新元素被添加/删除时,它也可以完全改变。查找数组结构,基于hashCode(),等于()实现,O(1)运行时复杂度用于插入和搜索,未排序。
  • TreeMap将根据包含键的natural ordering,根据它们的compareTo()方法进行迭代。这也可以通过外部比较器来实现。它还实现了SortedMap接口。树结构,基于compareTo()实现,O(log(N))运行时的复杂性用于插入和搜索,排序。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47358027

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档