作者:汪健宜婉瑜 | 来源:互联网 | 2023-01-29 12:12
我有一个Map>
.我希望在对地图的键进行过滤后将此地图转换为List.
例:
Map> words = new HashMap<>();
List aList = new ArrayList<>();
aList.add("Apple");
aList.add("Abacus");
List bList = new ArrayList<>();
bList.add("Bus");
bList.add("Blue");
words.put("A", aList);
words.put("B", bList);
给出一个关键,比如"B"
Expected Output: ["Bus", "Blue"]
这就是我想要的:
List wordsForGivenAlphabet = words.entrySet().stream()
.filter(x-> x.getKey().equalsIgnoreCase(inputAlphabet))
.map(x->x.getValue())
.collect(Collectors.toList());
我收到了一个错误.有人可以在Java8中为我提供一种方法吗?
1> Beri..:
你的sniplet会产生一个List>
没有List
.
您缺少flatMap,它会将列表流转换为单个流,因此基本上会展平您的流:
List wordsForGivenAlphabet = words.entrySet().stream()
.filter(x-> x.getKey().equalsIgnoreCase(inputAlphabet))
.map(Map.Entry::getValue)
.flatMap(List::stream)
.collect(Collectors.toList());
distinct()
如果您不希望重复值,也可以添加.