Java arraylist的元素已复制
我已经创建了一个arraylist,并在DO-While循环中向它添加了元素(字符串数组)。我使用以下方法添加元素: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
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循环之外,我一次又一次地得到了相同的字符串。非常感谢你的帮助非常感谢。那是我的问题。我修改了代码,它工作得很好。再次感谢