java - 如何比较arraylist和Hashmap并根据值从Hashmap中获取key?

标签 java arraylist

我有 list :

ArrayList<String> list = new ArrayList<>();

和 map :

Map<String, List<String>> map = new HashMap<>();

我需要比较列表和 map 的值,并根据该值返回键

问题是我不知道如何同步迭代,因为 arraylist 的大小与映射中每个列表的大小较小。

我也尝试过这个方法:

public static Object getKeyByValue(Map<String,List<String>> map, String value) {
    for (Entry<String, List<String>> entry : map.entrySet()) {
        if (Objects.equals(value, entry.getValue())) {
            return entry.getKey();
        }
    }
    return null;
}

getKeyByValue(map,list.get(0)); 

..但是即使有一定的值(value),这个调用也会返回 false...

有什么想法如何获取每个值的每个键吗? 非常感谢

最佳答案

您正在比较 List<String>String ,所以它永远不会返回 true。

使用List.contains相反,确定 String 是否出现在 List :

    if (entry.getValue().contains(value)) {
        return entry.getKey();
    }

关于java - 如何比较arraylist和Hashmap并根据值从Hashmap中获取key?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37025291/

相关文章:

java - Android:finish() 是否总是调用 onDestroy()?

java - Java/Scala内存统计数据库如何实现?

java - 从 ArrayList Java 获取实例变量值

java - 在 Java 的 Arraylist 中创建 Arraylist

java - 线程 "main"java.lang.NoSuchMethodException : after I add ArrayList 中的异常

java - 当查询结果不是类时,JPA 查询方法的返回类型是什么?

java - 为什么我们不应该创建一个 Spring MVC Controller @Transactional?

java - JDBC 连接池 : Connection Reuse?

java - 相同的 ArrayList 但不同的对象顺序

java - 将 TreeSet 转换为 ArrayList?