Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java arraylist的元素已复制_Java_Android_Arrays_Arraylist - Fatal编程技术网

Java arraylist的元素已复制

Java arraylist的元素已复制,java,android,arrays,arraylist,Java,Android,Arrays,Arraylist,我已经创建了一个arraylist,并在DO-While循环中向它添加了元素(字符串数组)。我使用以下方法添加元素: tempList.add(recordArray); //- recordArray is a String[] //ArrayList<String[]> tempList = new ArrayList<String[]>();// is declared in the activity before onCreate method 我为添加到ar

我已经创建了一个arraylist,并在DO-While循环中向它添加了元素(字符串数组)。我使用以下方法添加元素:

tempList.add(recordArray); //- recordArray is a String[]

//ArrayList<String[]> tempList = new ArrayList<String[]>();// is declared in the activity before onCreate method
我为添加到arrayList的3个数组元素中的每一个获取正确的字符串

问题是,当我尝试在DO WHILE循环之外使用相同的代码时,3次迭代中的每一次都会显示相同的字符串

总之,在DO-WHILE循环中,我得到以下结果:

1st iteration -  aStringArray[3] - displays "100350
2nd iteration -  aStringArray[3] - displays "100750
3rd iteration -  aStringArray[3] - displays "100800
1st iteration -  aStringArray[3] - displays "100800
2nd iteration -  aStringArray[3] - displays "100800
3rd iteration -  aStringArray[3] - displays "100800
在DO-WHILE循环之外,我得到以下结果:

1st iteration -  aStringArray[3] - displays "100350
2nd iteration -  aStringArray[3] - displays "100750
3rd iteration -  aStringArray[3] - displays "100800
1st iteration -  aStringArray[3] - displays "100800
2nd iteration -  aStringArray[3] - displays "100800
3rd iteration -  aStringArray[3] - displays "100800
我到处寻找答案,但找不到。希望这里有人能帮忙

非常感谢


clive

我强烈怀疑每次循环时都添加了相同的字符串数组。每次都应该创建一个新的字符串数组

不要忘记列表中只包含引用。我猜你的代码是这样的:

ArrayList<String[]> tempList = new ArrayList<String[]>();
String[] recordArray = new String[4];

for (int i = 0; i < 10; i++)
{
    recordArray[0] = "a" + i;
    recordArray[1] = "b" + i;
    recordArray[2] = "c" + i;
    recordArray[3] = "d" + i;
    tempList.add(recordArray);
}

这样你就可以在列表中引用10个不同的数组。

你还没有发布你的代码,所以我不得不猜测,但听起来你好像是在多次向列表中添加相同的
字符串[]
,而只是在循环的每次迭代中修改单个数组实例

您需要确保在每次迭代中实际分配一个新数组。应该有这样一行字:

recordArray = new String[size];

在你的循环中。

你能发布代码吗?我真的听不懂你在这里说的话。你能告诉我们你在循环外用来显示这些迭代的具体代码吗?非常感谢。那是我的问题。我完全被这样一个事实弄糊涂了:当我尝试从列表中提取字符串时,在Do-WHILE循环中它工作得很好,但是当我使用相同的循环来提取字符串时,但是在Do-WHILE循环之外,我一次又一次地得到了相同的字符串。非常感谢你的帮助非常感谢。那是我的问题。我修改了代码,它工作得很好。再次感谢