java-8 - 使用过滤器和计数的java 8流

标签 java-8 java-stream

我有一个名为employee 的数组列表。

List<Employee> employee = new ArrayList<Employee>();

我需要获取状态不为“2”或空的员工数量。

long count = 0l;
count = employee.stream()
.filter(p->!(p.getStatus().equals("2")) || p.getStatus() == null).count();

在上面的查询中出现“lambda 表达式不能在求值表达式中使用”之类的错误,请帮助我解决此错误。

列表员工包含类似的值

 empId  Status
  1       3
  2       4
  3       null

如果状态列不包含空值,则表示工作正常。

最佳答案

重要的是首先检查状态是否不为 null,然后我们才能对状态使用 equals 方法,否则我们将得到 NullPointerException。您也不需要将 count 声明为 0l,当未找到匹配项时,count() 将返回 0。

List<Employee> employee = new ArrayList<Employee>();
// long count = 0l;

// Status non null and not equals "2" (string)
ling count = employee.stream()
    .filter(e ->  Objects.nonNull(e.getStatus()) && (!e.getStatus().equals("2")))
    .count();

关于java-8 - 使用过滤器和计数的java 8流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69401251/

相关文章:

java - 使用 Java Stream API 逐行写出文本的更好方法?

Java lambda表达式-统计出现次数

java - 充气城堡 : remove algorithm protection attribute from signerInfos

java-8 - 在 Java8 中将 sql 日期转换为字符串

Java流在对象之间进行比较并返回该对象?

java - 自定义 map 收集器

java - 我应该如何检查 Stream<T> 是否已排序?

java - 为什么在某些情况下 Java Stream.forEach 方法比其他循环更快?

java - 使用流延迟调用多个服务

java - 如何使用流获取数组列表的特定值