java - 如何从地图内带有if条件的流中获取计数?
问题描述
List<Employee> Employees = getEmployeeList();
AtomicInteger count = new AtomicInteger();
Employees.stream()
.map(item -> {
UserProfile user = userDao.findById(item.getUserProfileId());
if(("domainName").equals(user.getDomain()) && ("agencyCode").equals(user.getAgencyNumber())){
count.getAndIncrement();
}
return item;
}).collect(Collectors.toList());
if
我需要满足条件的员工人数。如何删除count
变量并使用count()
Stream API 的方法?
澄清:我想过滤掉满足 If 块中提到的当前条件的员工,而我只需要调用一次。我之前在做什么,我会展示的。
List<Employee> Employees = getEmployeeList();
Employee employee = Employees.stream()
.filter(item -> ("domainName").equals(userDao.findById(item.getUserProfileId()).getDomain()))
.filter(item -> ("agencyCode").equals(userDao.findById(item.getUserProfileId()).getAgencyNumber()))
.findAny().orElse(null);
所以我要求只调用一次 userDao 方法。
解决方案
long count = getEmployeeList().stream()
.map(Employee::getUserProfileId)
.map(userDao::findById)
.filter(user -> "domainName".equals(user.getDomain())
&& "agencyCode".equals(user.getAgencyNumber()))
.count();
推荐阅读
- web-scraping - BeautifulSoup 获取属性值不起作用
- angular - 输入值意外影响兄弟
- r - Rmarkdown 为图形标题添加脚注
- excel - 是否可以直接引用数据透视表的源数据?
- countdown - 使用 Alpine.js 在 Livewire 中重新开始倒计时
- r - 如何在 RStudio 中找到与 xlsx 子集的多行和多列中的最大值对应的列名?
- java - 如何在android studio中通过其tagName而不是id来选择元素
- c# - .NET CORE - IE 浏览器不更新方法返回
- android - 单击一个按钮以调用另一个项目的主要活动
- python - 使用弹出式 GUI 中的按钮打开主 GUI 的功能