我有一个对象:

Trip {
        private TripName tripName;
        private List<TripStops> tripStops;
}

行程停止包含
TripStops {
           private PackageObject packageObject;
           private PackageTask packageTask;
}

我正在尝试使用Java8获取Trip Stop内部的PackageObject的计数。

我可以做这样的事情吗?或者,还有更好的方法
Integer packageCount = Trip.getTripStops.stream().filter(TripStops::getPackageObject).count

最佳答案

将语句“我正在尝试将TripObject内的PackageObject的计数”解释为代码:

long count = Trip.getTripStops().stream().count();

或者简单地:
int count = Trip.getTripStops().size();

因为每个TripStops都有一个PackageObject实例。

但是,要获得通过给定条件的TripStops::getPackageObject返回的元素的计数:
long count = Trip.getTripStops().stream()
                                .map(TripStops::getPackageObject)
                                .filter(criteria) // where criteria is the condition to be passed
                                .count();

// or merge map/filter into one with ---> .filter(t -> t.getPackageObject()...)

07-26 02:06