JAVA 8 - Stream() 功能,无法通过添加多个过滤器来打印值

标签 java java-8 filtering java-stream

我正在尝试通过两个 .filter() 打印来自 .stream() 的值。但该值未打印。

使用一个 .filter() 就可以打印这些值。
请在下面找到我的代码。

listProducts.stream()
        .flatMap(listproducts -> listproducts.getProductAttr().stream())
        .flatMap(attr ->attr.getProductAttrValue().stream())
        .filter(av ->  av.getLabel().equalsIgnoreCase("source"))
        .filter(av -> av.getLabel().equalsIgnoreCase("description"))
        .forEachOrdered(av -> System.out.println(av.getValue()));

最佳答案

Stream 中的任何元素都无法传递传递给两个 filter 调用的 Predicate,因为 av.getLabel( ) 不能同时等于“source”和“description”。

您可以使用单个过滤器:

.filter(av -> av.getLabel().equalsIgnoreCase("source") || 
              av.getLabel().equalsIgnoreCase("description"))

关于JAVA 8 - Stream() 功能,无法通过添加多个过滤器来打印值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48187835/

相关文章:

java - 检查 Spring 中数据库事务是否完成

java - 计算列表中日期之间的时间

java - DateTimeFormatter 在解析个位数部分时过于严格

java - 如何在不使用 Java 保存到磁盘的情况下生成 zip 文件?

java - Spring Boot + JAX-WS 无需额外的 servlet?

java - 如何使用java 8流获取路径长度

Java 流具有多个不同的属性

c++ - 如何找到连接一组点的平滑曲线(在 Open CV 中)?

python - 检测轻微噪声数据的逐渐增加然后减少

java - Map<String, Integer> 和 Map<Integer ,String> 排序