簡體   English   中英

Java 8流從列表中的Map讀取值

[英]Java 8 stream read value from Map in List

我不想使用foreach和循環。 我想在Java 8中使用流在List內的Map中查找值

List<Map<String, Boolean>> types = ...

map.stream().filter(...

問題是在過濾器中,我無法按鍵/值對進行搜索。

我想用boolean = true獲取所有元素

我做錯了嗎?

流式進入條目集:

types.stream()                               // stream of maps
    .flatMap(map -> map.entrySet().stream()) // flat map to stream of map entries
    .filter(Map.Entry::getValue)             // filter for value == true
    .map(Map.Entry::getKey)                  // get the key
    .collect(Collectors.toList());           // collect

如果希望以鍵/值對的列表結尾,則可以刪除.map(Map.Entry::getKey)

    List<Map<String, Boolean>> types = new ArrayList<>();

    Map<String, Boolean> myMap = new HashMap<>();
    Map<String, Boolean> myMap2 = new HashMap<>();

    myMap2.put("Meric", true);
    myMap2.put("BERBER", false);
    types.add(myMap2);

    myMap.put("TEST1", true);
    myMap.put("TEST2", false);
    types.add(myMap);


    types.stream()
            .flatMap(map -> map.entrySet().stream())
            .filter(Map.Entry::getValue)
            .map(Map.Entry::getKey)
            .forEach(System.out::println);

和輸出將是

 Meric
 TEST1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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