chuchao356 2022-01-17 08:39 采纳率: 50%
浏览 56
已结题

java自身List的循环嵌套会有问题吗?

问题遇到的现象和发生背景

由于实体类自身设计的原因导致了java自身List的循环嵌套

问题相关代码,请勿粘贴截图
public class SequenceControlUnit extends Observable implements Observer {

    @ApiModelProperty("所属任务id")
    @JSONField(serializeUsing = ToStringSerializer.class)
    private Long taskId;

    // 需要通过该操作步骤主键去判断操作结果
    @ApiModelProperty("一键顺控操作步骤主键")
    @JSONField(serializeUsing = ToStringSerializer.class)
    private Long sequenceControlOperateId;

    // 需要通过该操作顺序确定观察者链
    @ApiModelProperty("操作顺序")
    private Integer operateOrder;

    @ApiModelProperty("操作内容")
    private String operateContent;

    @ApiModelProperty("预期目标")
    private String expectedTarget;

    @ApiModelProperty("实际成功结果")
    private String actualSuccessResult;

    @ApiModelProperty("实际失败结果")
    private String actualFailResult;

    @ApiModelProperty("实际结果")
    private String actualResult;

    // 所关联的设备是否在运行
    @ApiModelProperty("量测状态")
    private Integer measurementStatus;

    // 需要通过该结果通知观察者
    @ApiModelProperty("单步结论")
    private String status;

    // 摄像头列表
    @ApiModelProperty("摄像头列表")
    private List<SequenceControlCameraInfo> sequenceControlCameraInfoList;

    // 所在的单元列表
    @ApiModelProperty("单元列表")
    @JSONField(serialize = false)
    private List<SequenceControlUnit> unitList;
}

// 2.创建观察者链
        for (int i = 0; i < unitList.size(); i++) {
            SequenceControlUnit unit = unitList.get(i);
            unit.setTaskId(taskId);
            unit.setSequenceControlCameraInfoList(groupByOperateId.get(unitList.get(i).getSequenceControlOperateId()).stream().distinct().collect(Collectors.toList()));
            unit.setUnitList(unitList);
            if (i != unitList.size() - 1) {
                unit.addObserver(unitList.get(i + 1));
            }
        }
运行结果及报错内容

img

这样会有问题吗?

  • 写回答

3条回答 默认 最新

  • 於黾 2022-01-17 08:56
    关注

    list本身只是一个引用
    如果list里的某一项是它自身,本身不会有任何问题
    但是千万别对它进行递归,那就造成无穷递归
    当然这说的仅仅是就定义层面上它是没问题的,实际使用中,涉及修改、删除某一项,那又很可能产生更多的问题
    所以最好从源头上杜绝这种可能性

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 1月25日
  • 已采纳回答 1月17日
  • 创建了问题 1月17日

悬赏问题

  • ¥15 精通抖音评论点赞接口的来!需要开发
  • ¥15 VB.NET2022如何生成发布成exe文件
  • ¥30 matlab appdesigner私有函数嵌套整合
  • ¥15 给我一个openharmony跑通webrtc实现视频会议的简单demo项目,sdk为12
  • ¥15 vb6.0使用jmail接收smtp邮件并另存附件到D盘
  • ¥30 vb net 使用 sendMessage 如何输入鼠标坐标
  • ¥15 关于freesurfer使用freeview可视化的问题
  • ¥100 谁能在荣耀自带系统MagicOS版本下,隐藏手机桌面图标?
  • ¥15 求SC-LIWC词典!
  • ¥20 有关esp8266连接阿里云