猿问

我如何使用流实现与 Java 8 相同的功能

我想做的是,如果连续的订单具有相同的邮政编码,则增加 10 分钟,否则,将旅程增加 30 分钟。例如,如果我有一个像下面这样的类,这就是我如何强制实现的。


@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

我怎样才能实现同样的事情,或者使用 java 8 流转换以上内容?我尝试了(减少)功能,但无法理解它。


慕仙森
浏览 105回答 1
1回答

侃侃无极

你可以使用IntStream:int&nbsp;totalMin&nbsp;=IntStream.range(0,&nbsp;orders.size()-1) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.map(i->&nbsp;orders.get(i+1).getPostCode().equals(orders.get(i).getPostCode())&nbsp;?&nbsp;10&nbsp;:&nbsp;30) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.sum();
随时随地看视频慕课网APP

相关分类

Java
我要回答