Java 8 流从 List 中的 Map 读取值

标签 java java-stream

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

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

map.stream().filter(...

问题是在过滤器中我无法通过键/值对进行搜索。

I want to get all elements with 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)

关于Java 8 流从 List 中的 Map 读取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50327693/

相关文章:

java - 子类化列表和 Jackson JSON 序列化

java - Android sdk 26 及以上 - 调用 JNI GetObjectField 并出现自定义数组对象的未决异常 java.lang.NoSuchFieldError

java - EL枚举字符串处理

Java Stream 过滤相同的字段但不同的标准

Java 8 流与集合存储

java - 使用java 8流的if-else条件

java - 如何在 Eclipse 的多个选项卡中打开多个控制台?

java - 同一项目中的多个 android-support-v4 版本

lambda - 为什么忽略实例变量的 "Variable used in Lambda expression must be final or effectively final"警告

Java Streams — 如何每第 n 个项目执行一个中间函数