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

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 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办