You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

迭代列表时若personAccountable有多对象如何创建多个PersonStackBuilder实例

实现方案

核心逻辑

  • 放弃原逻辑中单resp对应单PersonStackBuilder的结构,改为单Accountable元素对应单PersonStackBuilder
  • 每个PersonStackBuilder的公共属性(personID、personAreaCode等)统一从resp中读取复用
  • 每个实例的关联属性(personMortgageId等)从对应Accountable元素读取

完整实现代码

List<PersonInfo> personInfo = new ArrayList<>();

myResponseList.forEach(resp -> {
    List<Accountable> accountableList = resp.getPersonAccountable();

    // 可选兼容逻辑:如果需要Accountable列表为空时,保留1条只有基础属性的记录,可打开下方注释
    // if (CollectionUtils.isEmpty(accountableList)) {
    //     PersonStackBuilder person = new PersonStackBuilder();
    //     person.setPersonID(resp.getProjectID());
    //     person.setPersonAreaCode(resp.getPersonAreaCode());
    //     // 其他基础属性赋值
    //     personInfo.add(person);
    //     return;
    // }

    // 遍历每个Accountable元素,对应生成一个独立的PersonStackBuilder实例
    accountableList.forEach(acc -> {
        PersonStackBuilder person = new PersonStackBuilder();
        // 赋值公共基础属性
        person.setPersonID(resp.getProjectID());
        person.setPersonAreaCode(resp.getPersonAreaCode());
        // 其他和resp关联的基础属性赋值
        // ...
        // 赋值当前Accountable对应的独有属性
        person.setPersonMortgageId(acc.getMortId());
        // 其他和acc关联的属性赋值
        // ...
        personInfo.add(person);
    });
});

可选优化

如果使用JDK8+ stream写法,可以替换为flatMap批量收集结果,代码更简洁:

List<PersonInfo> personInfo = myResponseList.stream()
        .flatMap(resp -> resp.getPersonAccountable().stream()
                .map(acc -> {
                    PersonStackBuilder person = new PersonStackBuilder();
                    person.setPersonID(resp.getProjectID());
                    person.setPersonAreaCode(resp.getPersonAreaCode());
                    person.setPersonMortgageId(acc.getMortId());
                    // 其他属性赋值
                    return person;
                }))
        .toList(); 
// JDK16以下版本替换toList()为.collect(Collectors.toList())

内容的提问来源于stack exchange,提问作者user222

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 20:39:01