[英]selecting map based on values in the list
我有 listofMaps 和 listOfStrings。 如何仅获取结果列表中与 listofstring 中的值匹配的那些映射?
List<Map<String, Object>> list = listofMaps
.stream()
.filter(maps -> maps.containsValue(listOfString))
.collect(Collectors.toList());
如果我将 listOfString 替换为实际字符串(如“string”),则会选择一张地图,但不会选择多个匹配的地图。
如果映射中的值与listOfStrings
中的任何可能值匹配,则anyMatch
需要与List::contains
一起使用:
List<Map<String, Object>> listofMaps = Arrays.asList(
Map.of("id", 1, "name", "abc"),
Map.of("id", 2, "name", "xyz"),
Map.of("id", 3, "name", "stu")
);
List<String> listOfString = Arrays.asList("abc", "stu");
List<Map<String, Object>> listAnyMatch = listofMaps
.stream()
.filter(maps -> maps.values()
.stream()
.anyMatch(listOfString::contains))
.collect(Collectors.toList());
listAnyMatch.forEach(System.out::println);
输出
{name=abc, id=1}
{name=stu, id=3}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.