您好我要求安排地图的对象 按照另一张地图的键的顺序。 这是地图
Map ObjectMap = new HashMap()
ObjectMap .put(id1,Obj1);
ObjectMap .put(id2,Obj2);
ObjectMap .put(id3,Obj3);
ObjectMap .put(id4,Obj4);
现在,等级地图决定了ObjectMap中的ID顺序
Map rankedMap = new HashMap()
rankedMap .put(rank1,id3);
rankedMap .put(rank2,id4);
rankedMap .put(rank3,id1);
rankedMap .put(rank4,id2);
现在我必须根据每个ID的等级排列ObjectMap对象,如
ObjectMap .put(id3,Obj1);
ObjectMap .put(id4,Obj2);
ObjectMap .put(id1,Obj3);
ObjectMap .put(id2,Obj4);
ids
是Long
个对象
ranks
是int
个对象
请提前致谢
答案 0 :(得分:2)
'rankingMap'应该是链接的地图,如上所述:
Map rankedMap = new LinkedHashMap()
rankedMap .put(rank1,id3);
rankedMap .put(rank2,id4);
rankedMap .put(rank3,id1);
rankedMap .put(rank4,id2);
接下来,您可以遍历rankingMap中的id来填充rankingObjectMap,它也是一个linkedHashMap :(代码未经过测试)
Map rankedObjectMap = new LinkedHashMap();
for(Object id : rankedMap.values()){
rankedObjectMap.put(id, objectMap.get(id));
}
答案 1 :(得分:1)
HashMap
没有明确的排序。如果您想要订购,并且仍然有利于HashMap
提供的O(1)寻道时间,您可能需要使用LinkedHashMap,但请注意,此地图中的排序是按插入顺序定义的。您必须按顺序插入元素来处理它。
答案 2 :(得分:1)
您可以尝试使用TreeMaps和自定义比较器。