java - 有没有办法在流式传输列表时检查条件
问题描述
我有一个 Persons 实体,它有一个字段 contactType。现在根据联系人类型,我想将列表映射到不同的资源文件,即 WorkContactResource 或 HomeContactResource。我将使用 java 8。
workContact=personList.stream().filter(p->p.getPhoneType == PhoneType.WORK).map(WorkResource::new).collect(Collectors.toList());
homeContact=personList.stream().filter(p->p.getPhoneType == PhoneType.HOME).map(HomeResource::new).collect(Collectors.toList());
workContact.addAll(homeContact);
我做了两个不同的列表。但我想要的是在流式传输 peopleList 时,我会检查 contactType 是家庭还是工作,并且只映射到特定资源。如何实现这一点。
解决方案
我相信它应该是这样的
abstract class Resource {
}
class WorkResource extends Resource {
public WorkResource(Person person) {
***********
}
}
class HomeResource extends Resource {
public HomeResource(Person person) {
***********
}
}
Map<PhoneType, List<Resource>> contacts = personList.stream().collect(Collectors.groupingBy(p->p.getPhoneType, Collectors.mapping(Resource::new)));
然后按类型遍历地图
推荐阅读
- mysql - 字符编码问题 node.js mysql
- python - 我想在烧瓶中使用 shell 命令
- amazon-web-services - serverless create_domain - 无法创建自定义域
- javascript - 具有递归功能的轮播
- sql - 使用日期 startdatetime 和 end datetime 的 SQL 查询组
- plsql - 在 PL/SQL 中,我收到错误“对未初始化集合的引用”
- shell - 运行 CRON 作业时无法读取 GPIO 值
- python-2.7 - Docker 在 AWS Beanstalk for Python 应用程序上构建超时
- c# - C# SkiaSharp OpenTK Winform - 如何从后台线程绘制?
- jplayer - 在播放列表中的特定时间位置播放每个曲目