Java组合有序集合
假设我有一对值的列表-name,rankJava组合有序集合,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
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>