gpt4 book ai didi

java - 将一个数组列表添加到另一个数组列表时出现 StackOverflow 异常

转载 作者:搜寻专家 更新时间:2023-11-01 01:00:48 24 4
gpt4 key购买 nike

我在执行下面的代码时得到 java.lang.StackOverflowError

public class Insertion {
private static ArrayList integers1 = new ArrayList();
private static ArrayList integers2 = new ArrayList();

public static void main(String[] args) {
Collections.addAll(integers1, 1, 2, 3);
Collections.addAll(integers2, 5, 6, 7);

integers1.add(integers2);
System.out.println(integers1);
integers2.add(integers1);
System.out.println(integers2);
}
}

请解释为什么?

最佳答案

当您尝试打印列表时,StackOverflow 正在发生。
您有两个列表:integers1=[1,2,3,integers2]integers2=[5,6,7,integers1]

当你尝试打印 integers2 时,你实际上打印了:

[1,2,3,integers1.toString()]

integers1.toString()[5,6,7,integers2.toString()],后者又调用 integers1.toString( ) 一次又一次。这导致无限循环,只有当堆栈溢出时才结束。

这个打印的理论结果将是[1,2,3,5,6,7,1,2,3,5,6,7,...(无限重复)],这是通过递归完成的 - 但在某些时候,堆栈已满,程序中断。

关于java - 将一个数组列表添加到另一个数组列表时出现 StackOverflow 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25502557/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com