如何查找列表中的对象数

时间:2018-10-19 20:02:29

标签: java lambda java-8 java-stream

我有一个对象:

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

旅行停止包含

TripStops {
           private PackageObject packageObject;
           private PackageTask packageTask;
}

我正在尝试使用Java8获取行进停止中PackageObject的计数。

我可以做这样的事情吗?还是有更好的方法

Integer packageCount = Trip.getTripStops.stream().filter(TripStops::getPackageObject).count

1 个答案:

答案 0 :(得分:4)

将以下语句解释为“ “我正在尝试将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()...)