Mad*_*sal 2 java java-8 java-stream
我正在尝试学习 Java 8。有没有办法将下面的方法转换为 Java 8 Streams、filter 和 forEach。如果是这样,如何?
String[] couponList = coupons.split(",");
for(String coupon:couponList) {
singleCouponUsageCount = getSingleCouponUsageCount(coupon);
if(singleCouponUsageCount >= totalUsageCount)
return 0;
}
return 1;
//
for(String coupon:couponList) {
singleCouponUsageCount = getSingleCouponUsageCount(coupon);
if(singleCouponUsageCount >= totalUsageCount)
return singleCouponUsageCount;
}
return singleCouponUsageCount;
Run Code Online (Sandbox Code Playgroud)
您可以Stream
遍历数组的元素,将它们映射到它们的使用计数,并用于anyMatch
确定是否有任何使用计数满足应该导致返回 0 的条件:
return Arrays.stream(coupons.split(","))
.map(coupon -> getSingleCouponUsageCount(coupon))
.anyMatch(count -> count >= totalUsageCount) ? 0 : 1;
Run Code Online (Sandbox Code Playgroud)
编辑:
对于您的第二个片段,如果您想返回符合条件的第一个计数,您可以编写:
return Arrays.stream(coupons.split(","))
.map(coupon -> getSingleCouponUsageCount(coupon))
.filter(count -> count >= totalUsageCount)
.findFirst()
.orElse(someDefaultValue);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
154 次 |
最近记录: |