Java结合了有序集合

时间:2013-09-05 18:41:20

标签: java collections

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

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中执行此操作的最有效方法是什么,我正在考虑将值放在地图中并根据键对地图进行排序。

2 个答案:

答案 0 :(得分:4)

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

来源:SortedMap Javadocs

答案 1 :(得分:0)

如果你使用TreeMap并且你的密钥对象有Comparator,你的元素将会被排序。

如果要合并2个地图,请使用putAll

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

提示:整数具有可比性!

在你的情况下,Maps看起来是这样的probalby:

TreeMap<Integer, String>