java - 字符串数组的数组工作不正确

标签 java arrays string arraylist

我需要一个String 数组的动态数组。我使用 ArrayList 作为我的集合类型。无论我尝试什么方法,我总是遇到同样的问题:我最后一次调用 add() 导致之前的所有添加都失败。我尝试了多种方法,但仍然遇到同样的问题。

这是我的测试代码:

package tests;

import org.apache.cocoon.xml.XMLUtils;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

public class TestArray
{
    public static void main(String[] args)
    {

        List<String> array1 = new ArrayList();
        String e2[] = new String[2];

        // Array 1
        array1.clear();

        array1.add("A");
        array1.add("B");
        array1.add("C");
        array1.add("D");

        int nbEnregArray1 = array1.size();
        System.out.println("Nb Enreg Array1 : " +array1.size());

        for (int i = 0; i < nbEnregArray1; i++) {
            System.out.println("Enreg " + i + " : " + array1.get(i));
        }

        // ================================
        // Array 2
        // ================================
        ArrayList<String[]> array2 = new ArrayList<>();

        array2.clear();

        e2[0] = "W";
        e2[1] = "X";
        array2.add(0, e2);
        System.out.println("Array2 : Enregistrement rang 0 " + " : " + array2.get(0)[0] + " / " + array2.get(0)[1]);

        e2[0] = "C";
        e2[1] = "V";
        array2.add(1, e2);
        System.out.println("Array2 : Enregistrement rang 0 " + " : " + array2.get(0)[0] + " / " + array2.get(0)[1]);
        System.out.println("Array2 : Enregistrement rang 1 " + " : " + array2.get(1)[0] + " / " + array2.get(1)[1]);

        e2[0] = "B";
        e2[1] = "N";
        array2.add(2, e2);
        System.out.println("Array2 : Enregistrement rang 0 " + " : " + array2.get(0)[0] + " / " + array2.get(0)[1]);
        System.out.println("Array2 : Enregistrement rang 1 " + " : " + array2.get(1)[0] + " / " + array2.get(1)[1]);
        System.out.println("Array2 : Enregistrement rang 2 " + " : " + array2.get(2)[0] + " / " + array2.get(2)[1]);

        int nbEnregArray2 = array2.size();
        System.out.println("Nb Enreg Array2 : " + nbEnregArray2);

        for (int i = 0; i < nbEnregArray2; i++) {
            System.out.println("Array2 : rang " + i + " : " + array2.get(i)[0] + " / " + array2.get(i)[1]);
        }

        // ================================
        // Array3
        // ================================

        ArrayList<ArrayList<String>> array3 = new ArrayList<>();
        ArrayList<String> a3 = new ArrayList();

        array3.clear();
        String a31, a32, a33;

        a3.clear();
        a31 = "A";
        a32 = "Z";
        a3.add(a31);
        a3.add(a32);
        array3.add(a3);

        a3.clear();
        a31 = "E";
        a32 = "R";
        a3.add(a31);
        a3.add(a32);
        array3.add(a3);

        a3.clear();
        a31 = "T";
        a32 = "Y";
        a3.add(a31);
        a3.add(a32);
        array3.add(a3);

        for (int i = 0; i < array3.size(); i++) {
            System.out.println("Array3 : rang " + i + " : " + array3.get(i).get(0) + " / " + array3.get(i).get(1));
        }

        // ================================
        // List
        // ================================
        List<List<String>> l = new LinkedList<>();
        List<String> el = new LinkedList<>();

        l.clear();
        String l1, l2, l3;

        el.clear();
        l1 = "A";
        l2 = "Z";
        l3 = "E";
        el.add(l1);
        el.add(l2);
        el.add(l3);
        l.add(el);

        el.clear();
        l1 = "R";
        l2 = "T";
        l3 = "Y";
        el.add(l1);
        el.add(l2);
        el.add(l3);
        l.add(el);

        el.clear();
        l1 = "U";
        l2 = "I";
        l3 = "O";
        el.add(l1);
        el.add(l2);
        el.add(l3);
        l.add(el);

        for (int i = 0; i < l.size(); i++) {
            System.out.println("l : rang " + i + " : " + l.get(i).get(0) + " / " + l.get(i).get(1));
        }
    }
}

最佳答案

您的问题是您将相同的列表添加了三次,因此您的外部列表最终只包含对同一事物的三个引用。

您需要为每次插入创建一个全新的列表。

关于java - 字符串数组的数组工作不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30956698/

相关文章:

java - 我的程序给了我一个 StackOverflowError

java - websphere - CWWKE0054E 错误无法打开文件

javascript - JavaScript 数组中的最后一个键显示为长度?

c - C 中的格式检查

ruby - 不能将数组元素连接成一个字符串?

java - 内部类的实例化

java - 在java中比较和提取2个数组中的相似字符串,不比较双字字符串,.split (",")返回空白

arrays - 在 SSRS 的文本框中显示字符串列表

ios - 解析`objectSaveInBackground`,全部保存或全部保存

string - Powershell字符串操作和替换