Java 从列表中的任何值获取密钥

Java 从列表中的任何值获取密钥,java,java-8,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"] Map Map=newhashmap(); “

如何从以下hashmap列表中的任何值中获取密钥

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

"car"      : ["toyota", "bmw", "honda"]
"fruit"    : ["apple","banana"]
"computer" : ["acer","asus","ibm"]
Map Map=newhashmap();
“汽车”:[“丰田”、“宝马”、“本田”]
“水果”:[“苹果”、“香蕉”]
“计算机”:[“宏碁”、“华硕”、“ibm”]
如果我将值传递为“ibm”,我需要将钥匙作为“计算机”,对于“bmw”输入,需要将钥匙作为“汽车”

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

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

从列表中为地图中的每个条目输入关键字检查值是否包含关键字

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

System.out.println(key.get());
String value=“ibm”;
可选键=map.entrySet().stream()
.filter(e->e.getValue().contains(value))
.map(条目::getKey)
.findFirst();
System.out.println(key.get());

如果你想变得花哨,你可以使用

以下是一个例子:

@测试
public void givenBiMap_when querybyvalue_shouldReturnKey(){
BiMap capitalCountryBiMap=HashBiMap.create();
capitalCountryBiMap.put(“新德里”、“印度”);
capitalCountryBiMap.put(“华盛顿特区”,“美国”);
capitalCountryBiMap.put(“莫斯科”、“俄罗斯”);
String keyFromBiMap=capitalCountryBiMap.inverse().get(“俄罗斯”);
字符串valueFromBiMap=capitalCountryBiMap.get(“华盛顿特区”);
assertEquals(“莫斯科”,keyFromBiMap);
资产质量(“美国”,来自BIMAP的价值);
}

map.forEach((k,v)->{v.forEach(item->{})});
我不了解您的要求。您对特定输入的结果有何期望?值在列表中,需要获取该值的键添加输入和所需输出的示例。目前“汽车”的问题不清楚:[“丰田”、“宝马”、“本田”]“水果”:[“苹果”、“香蕉”]“计算机”:[“宏碁”、“华硕”、“ibm”]如果我将值传递为“ibm”,我需要将密钥作为“计算机”,对于“宝马”输入,需要将密钥作为“汽车”,至少分享一个与OP的问题相匹配的示例,说明他们为什么要使用您的建议。
@Test
public void givenBiMap_whenQueryByValue_shouldReturnKey() {
    BiMap<String, String> capitalCountryBiMap = HashBiMap.create();
    capitalCountryBiMap.put("New Delhi", "India");
    capitalCountryBiMap.put("Washington, D.C.", "USA");
    capitalCountryBiMap.put("Moscow", "Russia");

    String keyFromBiMap = capitalCountryBiMap.inverse().get("Russia");
    String valueFromBiMap = capitalCountryBiMap.get("Washington, D.C.");

    assertEquals("Moscow", keyFromBiMap);
    assertEquals("USA", valueFromBiMap);
}