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

如何使用三个String列表填充自定义ActorData类型的ArrayList

问题原因

  • 你写了三个独立的遍历循环,每次循环都会新建一个ActorData对象,仅给这个对象赋值一个属性后就添加到列表里,最终得到的列表长度是三个输入列表的长度之和,每个对象自然只有一个属性有值,其余都是null
  • 原有代码中重复声明了两次actors变量,属于冗余代码需要删除

修正后的实现代码

你只需要把原来的三个for循环替换成下面的单次循环即可:

List<ActorData> actors = new ArrayList<>();
// 先做长度校验避免下标越界,你也可以根据业务逻辑调整异常处理逻辑
if (actornames.size() != actorcharacters.size() || actornames.size() != actorphotoFILEpaths.size()) {
    // 这里可以加异常抛出或者日志打印,处理三个列表长度不一致的异常情况
    throw new RuntimeException("演员相关属性列表长度不一致");
}
// 单次循环按同一下标赋值三个属性到同一个对象
for (int i = 0; i < actornames.size(); i++) {
    ActorData actorData = new ActorData();
    // 赋值姓名
    actorData.setName(actornames.get(i));
    // 赋值角色
    actorData.setCharacter(actorcharacters.get(i));
    // 赋值照片路径
    String filepath = baseFILEpath + actorphotoFILEpaths.get(i).replaceAll("/", "");
    actorData.setPhotoFILEpath(filepath);
    // 赋值完成再添加到列表
    actors.add(actorData);
}

说明

如果业务场景中允许三个列表长度不一致,可以把循环条件改成i < Math.min(Math.min(actornames.size(), actorcharacters.size()), actorphotoFILEpaths.size()),取三个列表的最小长度作为遍历上限,避免数组下标越界问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 14:15:00