首页 > 解决方案 > 如何在列表中查找对象的数量

问题描述

我有一个对象:

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

Trip Stops 包含

TripStops {
           private PackageObject packageObject;
           private PackageTask packageTask;
}

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

我能做这样的事情吗?或者,还有更好的方法

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

标签: javalambdajava-8java-stream

解决方案


将“我正在尝试获取行程站内 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()...)

推荐阅读