java - arraylist 的元素重复

标签 java android arrays arraylist

我创建了一个数组列表,并在 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/

相关文章:

java - 无法将Gradle项目导入Eclipse

android - Javafxports 和 Gluon 魅力 - 如何在不将 Android 连接到 PC 的情况下生成 apk

c++ - 使用数组实现四叉树

检查结构数组中非空字符串的数量;将 NULL 值分配给结构数组中的 char 数组

java - 具有多个源文件夹的 eclipse 项目的 build.gradle

java - 如何从字符串<a>标签中提取url和标签?

java - 什么时候应该将方法声明为同步?

android - 有什么方法可以配置 gradle 来检查 strings.xml 中的拼写吗?

android - 如何在android中附加一个字符串?

javascript - 在javascript中将字符串连接成一个数组