我正在尝试通过两个 .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/