我有许多HashMap
包含数百个Comparable
对象(例如 type 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
需要将 a 传递给Collections.sort()
,这意味着必须进行从Collection
to的转换List
,即必须维持另一个性能损失。
此外,可能还有另一种更有效的方式来实现相同的目标。
注释?