首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓TreeMap忧郁..。还有其他选择吗?

安卓TreeMap忧郁..。还有其他选择吗?
EN

Stack Overflow用户
提问于 2015-08-05 20:12:32
回答 2查看 120关注 0票数 1

我一直试图在Android上使用TreeMaps,并遇到了以下两个问题:

  1. 在旧的Android系统中缺少方法: 当我尝试在我的Android2.2.2测试设备上运行我的应用程序时,它会向我问候 java.lang.NoSuchMethodError: java.util.TreeMap.lowerEntry 为什么?根据文献资料,应该支持TreeMap,因为API 1,不是吗?
  2. 其他设备的性能绝对糟糕(不正确,请参见更新!): 即使在只有大约100个元素的非常小的树上,操作也是以毫秒(!)的顺序进行的。来完成。哎哟。

基本上,我需要一个数据结构,它提供一个超快的映射,由稀疏整数键“索引”(例如,它包含键2、100、29392、399391、.)的条目。它需要能够快速执行以下操作:

  • 将一个条目添加到与任意整数键关联的映射中
  • 查找与某个整数键关联的条目(如果没有找到,则为null )
  • 从给定键的映射中移除键项对。
  • 遍历地图中的条目
  • 清除地图
  • 返回与小于(或等于)某个数字的最大键对应的条目
  • 返回与大于或等于某个数字的最小键对应的项。

所以,基本上我需要树状地图的getputremovevaluesclearceilingEntryhigherEntrylowerEntryfloorEntry。(对于最后两个选项,任何一个选项都可以,因为一个选项可以通过增加或减少引用键1来转换为另一个选项)

除了TreeMap,还有其他的选择吗?它的性能很好,可以在所有的安卓设备上使用,或者我可以在我的应用程序中使用?

更新:我需要向安卓或参与构建TreeMap的人道歉:由于一些愚蠢的逻辑错误,我给TreeMap方法打了很多次电话,比我想象的还要多。表演真的很好。我只是有点迟钝..。因此,第2点不再是人们关注的问题。离开1点。抱歉,各位.

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-05 21:24:44

您可以用一些诡计来模拟一些NavigableMap方法。例如,ceilingEntry大约等同于tailMap(key).entrySet().iterator().next(),但是如果没有条目,它将抛出,而不是返回null。(只需在迭代器上使用hasNext()来解决这个问题。)

lowerEntry更难;您可以执行headMap(key).lastKey()并调用get来获取整个条目。higherEntryfloorEntry更加困难,但您已经说过,这并不是绝对必要的。

票数 2
EN

Stack Overflow用户

发布于 2015-08-05 20:25:17

  1. 在旧的Android系统中缺少方法:

通过从https://android.googlesource.com/platform/libcore/+/refs/heads/master/luni/src/main/java/java/util/TreeMap.java将代码复制到应用程序中,您可以自己移植它。

  1. 在其他设备上,绝对糟糕的性能:

尝试使用https://commons.apache.org/proper/commons-collections/javadocs/api-2.1.1/org/apache/commons/collections/FastTreeMap.html

也许两种方法都能让你的状态更好。

HTHs

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

https://stackoverflow.com/questions/31841974

复制
相关文章

相似问题

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