gpt4 book ai didi

java - 从多个 HashMap 对象创建 SortedSet 的最佳方式

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:13:23 26 4
gpt4 key购买 nike

我有许多 HashMap 数据结构,其中包含数百个 Comparable 对象(例如,MyClass 类型)并且需要将所有单个数据结构中的值(不是键),然后对其进行排序。

由于 MyClass 对象的数量和到达率,此过程(每毫秒至少执行一次)需要尽可能高效。

一种方法是使用SortedSet,大致如下:

HashMap<String, MyClass>[] allMaps = ... // All the HashMaps

SortedSet<MyClass> set = new TreeSet<MyClass>();

Collection<MyClass> c;

for (HashMap<String, MyClass> m:allMaps)
{
c = m.values();
set.addAll(c);
}

将已排序的集合传递给 set.addAll() 可能会更快,这可能会在每次插入时或每隔几次插入后重新排序 TreeSet。但是,要这样做,需要将 List 传递给 Collections.sort(),这意味着从 Collection 的转换List 必须发生,即必须维持另一个性能下降。

此外,可能还有另一种更有效的方法来实现相同的目标。

评论?

最佳答案

我认为答案有点取决于 MyClass 数据的变化趋势。例如,如果每个时间范围内有几个新值,那么您可能需要考虑保留最后返回的排序集和先前键的副本,以便在下一次运行时,您可以只做一个变化的增量(即在映射中找到新键并手动将它们插入到您上次返回的排序集中)。

如果 MyClass 对象可能从 map 中删除,则此算法会有所不同。但一般的想法是让它更快,你必须找到一种方法来执行增量更改,而不是每次都重新处理整个集合。

关于java - 从多个 HashMap 对象创建 SortedSet 的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10581955/

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