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 - 使用 Java 中的文本文件查找数字的平均值

java - 如何从 Oracle 中的 Collection (Map) 类型的 TYPE 读取值

java - 获取数组错误和流条件的键

java - 我认为即使谓词无效, Stream.filter() 也不会显示编译时错误

java - 在内存中复制和编辑 HTML

java - 当我输入我的输入时得到 0

java - 正则表达式,获取所有超链接

java - 我应该使用 Java 8 Streams Api 来组合两个集合吗?

java - 我可以访问流链中先前 lambda 的值吗?

java - 在 findFirst() 之前使用 sorted() 流式传输不再懒惰