Java 8流从列表中的映射读取值
我不想使用foreach和loop。我想使用Java8中的流在列表中的映射中查找值Java 8流从列表中的映射读取值,java,java-stream,Java,Java Stream,我不想使用foreach和loop。我想使用Java8中的流在列表中的映射中查找值 List<Map<String, Boolean>> types = ... map.stream().filter(... 列表类型=。。。 map.stream().filter(。。。 问题是,在筛选器中,我无法按键/值对进行搜索 我想得到布尔值为true的所有元素 我做错了什么?通过条目集进行流式处理: types.stream()
List<Map<String, Boolean>> types = ...
map.stream().filter(...
列表类型=。。。
map.stream().filter(。。。
问题是,在筛选器中,我无法按键/值对进行搜索
我想得到布尔值为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)
。在条目集上流动:
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
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);
如果您希望最终得到一个键/值对列表,则可以删除
.map(map.Entry::getKey)
。所有映射的元素,其中哪个键映射到true
?是布尔类型=trueYes的所有元素您做错了。您有一个名为types
,然后调用map.stream()
我们不知道map
从哪里来,也不知道它是什么(我们知道它不是map
,因为没有map.stream()
)。所有映射的元素,其中哪个键映射到true
?是布尔类型=true的所有元素是您做错了。您有一个名为types
的变量,然后您调用map.stream()
,我们不知道map
来自何处或它是什么(我们知道它不是Map
,因为没有Map.stream()
)。
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);