Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用流API筛选集合时出现问题_Java_Java Stream - Fatal编程技术网

Java 使用流API筛选集合时出现问题

Java 使用流API筛选集合时出现问题,java,java-stream,Java,Java Stream,我尝试使用流API过滤具有集合字段的对象集合: @Override public void method (List<Flight> flightList) { List<Flight> trueFlights = flightList.forEach(flight -> flight.getSegments().stream().filter(segment -> segment.getArrivalDate().isBefore(segment.getD

我尝试使用流API过滤具有集合字段的对象集合:

@Override
public void method (List<Flight> flightList) 
{
List<Flight> trueFlights = flightList.forEach(flight -> flight.getSegments().stream().filter(segment -> segment.getArrivalDate().isBefore(segment.getDepartureDate())).collect(Collectors.toList()));
return trueFlights;
}
航班:

class Flight {
    private final List<Segment> segments;
   //.. getter setter 
class航班{
私人最后名单部分;
//…接球手

我做错了什么?

您可以在
流上查找
过滤器
操作。这将进一步要求您包含谓词,这可以通过在内部流上使用终端操作
anyMatch
allMatch
来实现

例如,如果要将输入航班包括到
trueFlights
如果其段的任何满足到达日期早于出发日期的条件,则可以执行
anyMatch

List<Flight> trueFlights = flightList.stream()
        .filter(flight -> flight.getSegments().stream()
                .anyMatch(segment -> segment.getArrivalDate().isBefore(segment.getDepartureDate())))
        .collect(Collectors.toList());
List trueFlights=flightList.stream()
.filter(flight->flight.getSegments().stream())
.anyMatch(段->段.getArrivalDate().isBefore(段.getDepartureDate()))
.collect(Collectors.toList());

另一方面,您所做的错误是使用了具有
void
返回类型的
forEach
,然后尝试从返回类型中进一步收集元素。

arrivalDate不总是在De出发日期之前吗?如果您暂时忽略编译错误,这段代码的目的是什么。
List<Flight> trueFlights = flightList.stream()
        .filter(flight -> flight.getSegments().stream()
                .anyMatch(segment -> segment.getArrivalDate().isBefore(segment.getDepartureDate())))
        .collect(Collectors.toList());