我有一个对象:
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
答案 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()...)