gpt4 book ai didi

java - arraylist 的元素重复

转载 作者:行者123 更新时间:2023-12-02 08:20:13 24 4
gpt4 key购买 nike

我创建了一个数组列表,并在 DO While 循环中向其中添加了元素(字符串数组)。我使用以下内容添加元素:

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

//ArrayList<String[]> tempList = new ArrayList<String[]>();// is declared in the activity before onCreate method

如果我使用以下代码检查 DO WHILE 循环中的数组:

aStringArray = tempList.get(index);
Log.i(TAG,"aStringArray[0] = " + aStringArray[3]);
index++;

我为添加到 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

在 DO WHILE 循环之外,我得到以下内容:

1st iteration -  aStringArray[3] - displays "100800
2nd iteration - aStringArray[3] - displays "100800
3rd iteration - aStringArray[3] - displays "100800

我到处寻找答案,但找不到。希望这里有人可以提供帮助。

非常感谢

克莱夫

最佳答案

我强烈怀疑您每次执行循环时都会添加相同字符串数组。您应该每次创建一个字符串数组。

不要忘记该列表仅包含引用。所以我的猜测是你的代码如下所示:

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 个相同引用的ArrayList。相反,你想要这个:

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

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

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

关于java - arraylist 的元素重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5626587/

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