java - 从列表中的任何值获取键

标签 java java-8

如何从下面的 HashMap 列表中的任何值中获取键?

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

"car"      : ["toyota", "bmw", "honda"]
"fruit"    : ["apple","banana"]
"computer" : ["acer","asus","ibm"]

如果我将值传递为“ibm”,我需要获取 key 为“computer”,对于“bmw”输入需要获取 key 为“car”。

我正在使用下面的代码来获取 key ,需要任何简短或更好的选项

map.forEach((k, v) -> {
List<String> list = v;
}

列表中的键

最佳答案

对于 map 中的每个条目,检查值是否包含您的关键字

String value = "ibm";
Optional<String> key = map.entrySet().stream()
            .filter(e -> e.getValue().contains(value))
            .map(Entry::getKey)
            .findFirst();

System.out.println(key.get());

关于java - 从列表中的任何值获取键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56702578/

相关文章:

java - 是否可以在更新 Java Web 启动应用程序时强制清除缓存?

java - 从 Collectors.partitioningBy 返回非类类型

java-8 - 为什么用于创建谓词的函数应该定义为静态的?

Java Apache Beam - 使用 DataflowRunner 保存文件 "LOCALY"

java - 如何使用 jsoup 从 div 中的 2 个范围中选择 1 个范围

java - android 套接字应用程序在模拟器上工作正常但在 android 设备上崩溃

sum - java8流分组聚合

Java 8 计算最小值

java - 是否有等同于 Scala 集合 "collect"的 Java Stream 方法?

java - java在excel中的值前面加0