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中将字符串转换为json格式

java - 将一种方法从一个类实现到另一个类?

java - 如何使用 JAVA 8 从 map 中获取第一个键值?

Java 消息格式化程序不工作

java - Null Exception 从下拉列表中保存值

java - 可以从 android 中的另一个类访问单选按钮的选中状态

java - 在 AsyncTask 到 MainActivity 的变量中存储并使用 HttpResponse

java - 如何将 Lambda 表达式写入方法引用?

sorting - Java 8 - 对具有空值的整数列表进行排序

java - 使用 Java 8 Stream API 合并两个 Map<String, Integer>