public class Product {
private final String name; // имя продукта
private final String manufacturerName; // имя производителя
// далле конструкоры, геттеры и т.д.
//...
}
和产品清单:
List<Product> products = Arrays.asList(
new Product("product1", "manufacturer1"),
new Product("product2", "manufacturer2"),
new Product("product3", "manufacturer1")
);
相反,
.collect(Collectors.counting())最好使用.count(),因为 这更具可读性,并且基本上做同样的事情。但
Collectors.counting()它可以用于其他目的,例如,它可以用于收集器Collectors.groupingBy等Collectors.collectingAndThen。例子
有一个产品类:
和产品清单:
假设我们要获取
Map,其中键是制造商的名称,值是生产的产品数量。你可以使用Collectors.counting(如果你使用静态导入看起来不那么麻烦)来做到这一点:执行结果:
{manufacturer1=2, manufacturer2=1}终端方法
count()有一个有趣的特性——如果中间操作链中没有改变源数据量的操作(例如filter()),那么这些中间操作将不会被执行。事实上,编译器执行优化以加快结果。例如:不会向控制台输出任何内容,同时
collect(Collectors.counting())确保链中的所有方法都按标准执行。