Kar*_*yan 2 java filtering java-8 java-stream
我试图从.stream()via 2 打印值.filter().但价值不是印刷.
一个人.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()));
Run Code Online (Sandbox Code Playgroud)
Era*_*ran 11
没有任何元素Stream可以Predicate传递给你的两个filter调用传递,因为av.getLabel()不能同时同时"源"和"描述".
您可以使用单个过滤器:
.filter(av -> av.getLabel().equalsIgnoreCase("source") ||
av.getLabel().equalsIgnoreCase("description"))
Run Code Online (Sandbox Code Playgroud)
.filter(av -> Pattern.matches("(?i)source|description", av.getLabel()))
Run Code Online (Sandbox Code Playgroud)
"source"在第一次过滤后,您只保留字符串(忽略大小写).
第二个filter开始了之前的结果.
您应该在一个内部构建一个复合布尔表达式filter.
我建议写那个简单的正则表达式.*
*可以通过预编译模式来改进@ daniu的建议.
| 归档时间: |
|
| 查看次数: |
98 次 |
| 最近记录: |