java - 检查列表是否是 HashMap 中的值

标签 java list hashmap

我想检查一个值是否存在。

我的代码:

public static final Map<String, List<String>> m = new HashMap<>();

if(m.containsValue("gummi")) {...}

我的问题是该值是一个列表。
我如何检查列表?

最佳答案

所以我要解释这个问题,想知道 Map 是否有任何值。包含目标 String .

可能有更合适的第三方双向多图实现。如果您将来正在阅读本文,则 Java SE 中可能会出现此类类型 - 请编辑此答案。

鉴于数据结构,这将需要搜索整个数据。最好有 Map映射另一种方式。让我们忽略它。

流单行表达式解决方案:

m.values().stream().anyMatch(list -> list.contains("gummi"))

编辑:对于 Horse Voice,非流版本。
flatContains(m.values(), "gummi")

在哪里
public static boolean flatContains(
    Iterable<? extends Collection<?>> collections,
    Object value
) {
    for (Collection<?> collection : collections) {
        if (collection.contains(value)) {
            return true;
        }
    }
    return false;
}

通常避免流可以使代码更具可读性(并且速度更快)。然而,在这种情况下,我会直接去溪流。如 flatMap参与,选择会更接近。

关于java - 检查列表是否是 HashMap 中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32925049/

相关文章:

java - 如何在 Jackson2 中使用多参数构造函数反序列化枚举?

python - lndexError : list index out of range

java - 字符串键混合大写会覆盖 Hashmap 中的条目

java - 无法在 Java 中向 LinkedHashMap 添加元素

python - HashMap 在Python字典中传递引用

java - 在 hibernate jpa OneToOne 关系中的 db 表上添加了额外的列

java - Rest Api异常处理

java - log4j 包不存在

java - 如何使用 Jackson 读取 JSON 文件中的多个对象?

Python3如何分隔元组中的项目