我有一个 HashMap ,其中有一个对象键和另一个对象的数组列表作为值:
HashMap<Object1, ArrayList<Object2>> map;
一个Object2可以属于多个Object1。我想反转它,让它变成:
HashMap<Object2, ArrayList<Object1>> reversed;
我该怎么做?
我已经看到了具有对象键和对象值的 HashMap 的解决方案,但不同的是,我的问题围绕着一个数组列表作为值。
最佳答案
你可以这样做:
HashMap<Object2, ArrayList<Object1>> reversed = new HashMap<>();
for(Map.Entry<Object1, ArrayList<Object2>> entry : map.entrySet()){
List<Object2> list = entry.getValue();
for(Object2 obj : list){
if(reversed.containsKey(obj)){
reversed.get(obj).add(entry.getKey());
}else{
reversed.put(obj, new ArrayList<Object1>(Arrays.asList(new Object1[]{entry.getKey()})));
}
}
}
关于java - 如何在 Java 中反转列表的 HashMap ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37372574/