1

假设我有一对值列表 - 名称,排名

A = [ ('john',4), ('doe',7) .... ]
B = [ ('john',4), ('carmack',2) .....]
...

我想将上述列表合并到一个合并了排名的集合中,即

Combined = [ ('carmack',2),('john',4),('doe',7) ]

在 sql 术语中,这等于

SELECT * FROM (
      SELECT * FROM A
         UNION
      SELECT * FROM B
         UNION
      ....
      ) ORDER BY RANK 

在 Java 中执行此操作的最有效方法是什么,我正在考虑将值放入映射中并根据键对映射进行排序。

4

2 回答 2

4

您可以使用 a TreeMap,它允许您Comparator在其实例化中指定 a 并将根据此比较器对元素进行排序,或者TreeSet如果您希望排除重复项,则使用 a 。

来源:SortedMap Javadocs

于 2013-09-05T18:45:14.280 回答
0

如果您使用 aTreeMapComparator为您的 Key-Objects 使用 a,则您的元素将始终被排序。

如果你想结合 2 个地图使用putAll

Map<Integer, String> map3 = new TreeMap<Integer, String>();
map3.putAll(map1);
map3.putAll(map2);

提示:整数是可比的!

在你的情况下,Maps看起来很可能是这样的:

TreeMap<Integer, String>
于 2013-09-05T18:51:28.197 回答