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