我有 Java Map<String,List<String>> 和 String var,如何在不使用 For 循环的情况下 return 其值(列表)包含 String var 的键

I have Java Map<String,List<String>> and String var, how to return keys whose values(List) contains String var without using For loops

private Set<Integer> keysForValue(Map<Integer, Set<Integer>> map, Integer value) {
    
    Set<Integer> keysSetContainingValue = new HashSet<Integer>();
    
    for (Map.Entry<Integer, Set<Integer>> entry : map.entrySet()) {
        if(entry.getValue().contains(value)) keysSetContainingValue.add(entry.getKey());
    }
    return keysSetContainingValue;
}

尽管您的标题在您的代码中说的是 Map,但您使用的是 Map ...

    return map.entrySet()
              .stream()
              .filter(entry -> entry.getValue().contains(value))
              .map(Map.Entry::getKey)
              .collect(Collectors.toSet());

为地图使用 keySet() 而不是 entrySet() 可能会稍微好一些以摆脱冗余映射:

private Set<Integer> keysForValue(Map<Integer, Set<Integer>> map, Integer value) {    
    return map.keySet()
              .stream() // Stream<Integer> of keys
              .filter(k -> map.get(k).contains(value))
              .collect(Collectors.toSet());

}