The list is not filled

Tags:



I am trying to nest data into a list, which I also add to another list. The challenge is to get a list of nested lists of data.

    String content1;
    String content2;

    ArrayList<ArrayList<String>> listData = new ArrayList<>();
    ArrayList<String> listDataOne = new ArrayList<>();

    for (int i = 0; i < 3; i++) {
        content1 = "one " + i;
        content2 = "two " + i;

        listDataOne.add(content1);
        listDataOne.add(content2);

        System.out.println(listDataOne);
        listData.add(listDataOne);
        System.out.println(listData); // [[one 2, two 2], [one 2, two 2], [one 2, two 2]]
        listDataOne.clear();
    }
    System.out.println(listData);  // [[], [], []]

But in the end, I get empty nested lists. What am I doing wrong?

Answer

At the end of your for loop you’re clearing listDataOne and since listData has the same list reference, it gets cleared too. You need to replace

listDataOne.clear();

with

listDataOne = new ArrayList<>();

to preserve data.



Source: stackoverflow