java - 如何在 Java 中反转列表的 HashMap ?

标签 java arraylist hashmap

我有一个 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/

相关文章:

java - 二叉搜索树,添加相同元素异常(exception)。

java - 添加 ArrayList 而不迭代

hashmap - 为什么 LinkedList 作为 HashMap 的存储桶实现?

java - 从文件中提取 docID 和文档并将它们放入 HashMap 中

java - 为什么 loadfactor 是 0.75

java - Weblogic jdom NoClassDefFoundException

java - 平滑的网格运动

java - AsyncTask get() 方法无法正常工作

java - 如何实例化一个 ArrayList<?> 并通过 Java 反射添加一个项目?

java - ArrayList 中的元素数量