在 Stream 的终止操作中,有几个关于聚合的方法,包括计数、最小最大值取值。
计数 count
long count();
注意了,Stream 不是集合,不能再用 size()
来计算元素个数了。
1 | public void countTest() { |
比较 min、max
Optional<T> min(Comparator<? super T> comparator);
Optional<T> max(Comparator<? super T> comparator);
min
和 max
一眼看上去老熟悉了,毕竟我们讲过多次比较器了。这两个方法根据传入的比较器来判断两个对象之间的大小,从而确定最小最大值。
1 | public void minMaxTest() { |
此处返回的是 Optional
,本例因为确定有值,所以直接使用 get
方法。
试想一下,传统 for
循环来自己求最大最小值有多少代码要写?判断非空、循环、首元素赋值、比较并重新赋值,经过这么多固定步骤才可以得到我们想要的最大最小值。现在,你需要一行代码。不要998,也不要98,1块钱就可以带回家。
总结
count
、min
、max
三个方法使用起来还是比较简单的,基本上是看了 API 就能上手。min
和max
返回的是Optional
,如果是一个空的 Stream,是没有最大或最小值的,取值时注意尽量避免Optional.get
。
注:本文配套代码可在
github
查看:stream-and-lambda