我有一个名为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/