gpt4 book ai didi

java - Android TreeMap 蓝调......有其他选择吗?

转载 作者:行者123 更新时间:2023-11-29 20:31:44 24 4
gpt4 key购买 nike

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

  1. 旧版 Android 系统上缺少方法:
    当我尝试在我的 Android 2.2.2 测试设备上运行我的应用程序时,它向我致意
    java.lang.NoSuchMethodError: java. util.TreeMap.lowerEntry
    为什么?根据 the documentation , TreeMap 应该从 API 1 开始支持,不是吗?
  2. 在其他设备上绝对糟糕的性能(不正确,查看更新!):
    即使在只有 100 个左右元素的非常小的树上,操作也需要毫秒 (!) 的数量级才能完成。哎哟...

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

  • 向与任意整数键关联的映射添加条目
  • 找到与某个整数键关联的条目(如果没有找到则为 null)
  • 从给定键的映射中删除键输入对
  • 迭代映射中的条目
  • 清除 map
  • 返回小于(或等于)某个数的最大key对应的entry
  • 返回大于或等于某个数的最小key对应的entry

所以,基本上我需要 TreeMap 的 getputremovevaluesclearceilingEntryhigherEntry,以及 lowerEntryfloorEntry。 (对于最后两个选项都可以,因为只需将引用键递增或递减 1 即可将一个选项转换为另一个选项)

除了 TreeMap 之外,是否有任何性能良好且可用于所有 Android 设备或我可以包含在我的应用程序中的替代品?

更新:我需要向 Android 或任何参与构建 TreeMap 的人道歉:由于一些愚蠢的逻辑错误,我调用 TreeMap 方法的次数比我想象的要多。性能实际上非常好。我只是被智障了……所以,第 2 点不再是一个问题。离开第1点。对不起,大家......

最佳答案

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

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

关于java - Android TreeMap 蓝调......有其他选择吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31841974/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com