Java 如何使用流api求和?

Java 如何使用流api求和?,java,sum,java-stream,Java,Sum,Java Stream,我试图找出每段中两次约会之间的小时总数 部分: class Segment { private final LocalDateTime departureDate; private final LocalDateTime arrivalDate; //..getter setter 航班: class Flight { private final List<Segment> segments; //.. getter setter

我试图找出每段中两次约会之间的小时总数

部分:

class Segment {
    private final LocalDateTime departureDate;

    private final LocalDateTime arrivalDate; 
    //..getter setter  
航班:

class Flight {
    private final List<Segment> segments;
   //.. getter setter 
.forEach()
操作不会返回任何内容,因此无法将其分配给sum变量。这里需要的是
flatMap()
操作:

flightList.stream().flatMap(flight->flight.getSegments().stream())
.mapToInt(segment->(int)ChronoUnit.HOURS.between(segment.getDepartureDate(),segment.getArrivalDate())
.sum();

我会将
航班列表
流式处理,然后
平面图
得到
s的列表,然后将它们映射到出发和到达之间的小时数和总和。注意
ChronoUnit.between
返回一个
,而不是
int

长和=
flightList.stream()
.flatMap(f->f.getSegments().stream())
.mapToLong(s->ChronoUnit.HOURS.between(
s、 getDepartureDate(),s.getArrivalDate())
.sum();

那不应该
int sum=
进入循环吗?
forEach()
返回
void
,因此无法编译。您可能还需要每次航班的金额,对吗?这回答了您的问题吗?问问题这里有什么问题吗?我想如果您对此进行解释,当然会更有帮助。@Eklavya抱歉,我的英语不是很好
int sum = flightList.forEach(flight -> {
    flight.getSegments().stream().mapToInt(segment -> (int) ChronoUnit.HOURS.between(segment.getDepartureDate(), segment.getArrivalDate())).sum();
});