Java 当我实例化一个自定义列表类时,内部数组不会';I don’我没有表现得像预期的那样

Java 当我实例化一个自定义列表类时,内部数组不会';I don’我没有表现得像预期的那样,java,arrays,list,class,instantiation,Java,Arrays,List,Class,Instantiation,下面是列表类和测试的链接: 下面是我打印阵列时的结果: 68 93 80 111 103 100 106 0 78 87 78 141 72 等等 数组的大小应仅为10,并用零填充。有什么想法吗?编辑:见下面的评论。 复制数组时,复制的是该数组的值(它是对原始数组的引用) 您需要执行阵列的深度复制,否则此行: int[] temp = Arrays.copyOf(array, array.length*2) 它不会给你一个新数组来保存原始数组的值,它只是把旧数组的引用值放到新数组中 基本上,如

下面是列表类和测试的链接:

下面是我打印阵列时的结果:

68 93 80 111 103 100 106 0 78 87 78 141 72 等等


数组的大小应仅为10,并用零填充。有什么想法吗?

编辑:见下面的评论。

复制数组时,复制的是该数组的值(它是对原始数组的引用)

您需要执行阵列的深度复制,否则此行:

int[] temp = Arrays.copyOf(array, array.length*2)
它不会给你一个新数组来保存原始数组的值,它只是把旧数组的引用值放到新数组中


基本上,如果您需要复制原始数组的内容并保持原始数组不变,您应该遍历原始数组的内容并创建一个新数组。

请不要让我们转到您的代码;将您的代码带到我们这里来。您的代码似乎可以按原样打印出所有的
0
s。。(我自己运行)
if(full!=true)
非常非常难看。如果(!full),则应为
。如果(items==array.length)full=true,则另一个丑陋的构造
,应该只是
full=items==array.length
。运行代码。在我的例子中,它也只打印零。不是真的。下面是一个例子
int[]intArray={1,2,3,4,5};int[]copyArray=Arrays.copyOf(intArray,intArray.length哇哦,你说得对。我上周帮了别人一个忙。我想他们可能用了clone()而不是copyOf(),我只是对这里的代码不够注意。