首页 > 解决方案 > 有没有办法在流式传输列表时检查条件

问题描述

我有一个 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 是家庭还是工作,并且只映射到特定资源。如何实现这一点。

标签: javaspring-boot

解决方案


我相信它应该是这样的

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)));

然后按类型遍历地图


推荐阅读