【Java 8 新特性】Java Stream通过count()获取流数据元素总数
作者:互联网
本页将遍历Stream.count()
方法示例。count()
方法返回此流中元素的总数。
count()
方法是获取流总数简写的方法。
在javadoc中count()
方法声明。
long count()
返回:count()
返回此流中元素的总数。
count()
是流终端操作(stream terminal operation
)。
流操作(stream operations
)分为中间操作(intermediate operation
)和终端操作(terminal operation
),并结合起来形成流管道(stream pipelines
)。
中间操作是惰性操作,如filter()
方法,它们实际上不执行任何过滤,而是创建一个新的流,在遍历初始流时,它们只包含与给定谓词匹配的元素。
只有在执行诸如count()
之类的终端操作时,才会遍历管道流。
示例1:下面是数字类型的列表
List<Integer> numList = Arrays.asList(42, 44, 43, 41);
下面count()
方法的作用是:返回流中元素的总数
long c = numList.stream().count();
c的值是4。
现在让我们对流使用filter
方法,然后对元素进行计算总数。
long c = numList.stream().filter(e -> e % 2 == 0).count();
c的值是2。
count()
是获取流总数简写的方法。
下面是不使用count()
方法获取总数的代码。
long c = numList.stream().mapToLong(e -> 1L).sum();
c的值是4。
示例2:下面是名单列表
List<String> strList = Arrays.asList("Mohit", "Nilesh", "Mahesh");
让我们在列表流中使用count()
。
long c = strList.stream().count();
c的值是3。
现在对字符串流使用过滤器并对其进行计数。
long c = strList.stream().filter(e -> e.startsWith("M")).count()
c的值是2。
众所周知,count()
是获取流总数简写的方法。让我们不使用count()
方法来计算计数。
long c = strList.stream().filter(e -> e.startsWith("M")).mapToLong(e -> 1L).sum();
c的值是2。
示例3:在这个例子中,我们有一个对象列表。我们将根据给定的条件过滤列表流,然后对元素进行计数。
CountDemo.java
package com.concretepage;
import java.util.Arrays;
import java.util.List;
public class CountDemo {
public static void main(String[] args) {
List<User> users = Arrays.asList(
new User("Vikas", 30),
new User("Krishna", 29),
new User("Virat", 30),
new User("Mahesh", 30)
);
long c1 = users.stream().filter(u -> u.getUserName().startsWith("V")).count();
System.out.println(c1); //Output: 2
long c2 = users.stream().filter(u -> u.getAge() == 30).count();
System.out.println(c2); //Output: 3
}
}
class User {
private String userName;
private int age;
public User(String userName, int age) {
this.userName = userName;
this.age = age;
}
//Sets and Gets
}
输出
2
3
参考文献
【1】Java doc: Stream
【2】Java Stream count()
标签:count,总数,Java,Stream,stream,long,filter,User 来源: https://blog.csdn.net/qq_31635851/article/details/111164125