簡體   English   中英

根據列表中的值選擇地圖

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM