Java组合有序集合

Java组合有序集合,java,collections,Java,Collections,假设我有一对值的列表-name,rank A = [ ('john',4), ('doe',7) .... ] B = [ ('john',4), ('carmack',2) .....] ... 我想把上面的列表合并成一个集合,在这个集合中排名已经被合并,即 Combined = [ ('carmack',2),('john',4),('doe',7) ] 在sql术语中,这等于 SELECT * FROM ( SELECT * FROM A UNION

假设我有一对值的列表-name,rank

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

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


来源:

您可以使用一个
树映射
,它允许您在其实例化中指定一个
比较器
,如果您希望排除重复项,它将根据该比较器或
树集对元素进行排序

来源:

如果您对关键对象使用了
比较器,那么元素将一直被排序

如果要组合2个贴图,请使用

如果您对关键对象使用并具有
比较器
,则元素将始终被排序

如果要组合2个贴图,请使用


您正在寻找
对象对的
集合吗?使用树状集合,然后将集合的所有()添加到其中。使用
树状映射来维护OrderingsCriteriam并消除重复。或
哈希集
,然后进行排序。如果有两个相同的键,您如何确定要存储的值?@SotiriosDelimanolis不完全是,对象要复杂得多,我只是使用了一个简单的示例“根据键排序地图”在这种情况下,键是什么?关键是排名吗?这不是组合的
对象的结构方式。您正在寻找
对象对的
集合吗?使用树状集合,然后只需将集合的所有()添加到其中。使用
树状映射来维护排序标准并消除双重。或
哈希集
,然后进行排序。如果有两个相同的键,您如何确定要存储的值?@SotiriosDelimanolis不完全是,对象要复杂得多,我只是使用了一个简单的示例“根据键排序地图”在这种情况下,键是什么?关键是排名吗?这不是组合的
的结构方式。
Map<Integer, String> map3 = new TreeMap<Integer, String>();
map3.putAll(map1);
map3.putAll(map2);
TreeMap<Integer, String>