[英]How can i achieve the same functionality with Java 8 using streams
What I wanted to do was to add 10min if consecutive orders have the same postcode, otherwise, add 30 min to the journey. 如果连续订单具有相同的邮政编码,我想要的是增加10分钟,否则,增加30分钟的旅程。 For example, if I have a class like the following this is how i achieve that imperatively.
例如,如果我有一个像下面这样的类,这就是我如何实现这一目标。
@Data
@AllArgsConstructor
public static class Order{
private String orderNumber;
private final String postCode;
}
Order order1 = new Order("1","N1");
Order order2 = new Order("2","N1");
Order order3 = new Order("3","N3");
Order order4 = new Order("4","N4");
List<Order> orders = List.of(order1, order2, order3, order4);
int totalMin = 0;
for (int i=0;i < orders.size()-1 ; i++ ){
if (orders.get(i+1).getPostCode().equals(orders.get(i).getPostCode())){
totalMin+=10;
}
else{
totalMin+=30;
}
}
System.out.println(totalMin) // 70
if order 2 is new Order("2","N2"); // 90
how can I achieve the same thing, or convert the above using java 8 streams? 我怎样才能实现同样的事情,或者使用java 8流转换上面的内容? I tried (reduce) function but couldn't get my head around it.
我试过(减少)功能,但无法理解它。
You could use IntStream
for that : 您可以使用
IntStream
:
int totalMin =
IntStream.range(0, orders.size()-1)
.map(i-> orders.get(i+1).getPostCode().equals(orders.get(i).getPostCode()) ? 10 : 30)
.sum();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.