1

I have a problem with array of arrays object. I tried the default Java array like this:

String[][] array = new String[5][5];

And it worked. But now I'm facing for another problem. I don't know the sizes of the array so I need a dynamically allocated array of arrays. I tried this:

ArrayList<String> array = new ArrayList<>();
ArrayList<ArrayList<String>> arrayOfArrays = new ArrayList<>();

array.add("1");
array.add("2");
array.add("3");
arrayOfArrays.add(array);
System.out.println(arrayOfArrays);
array.clear();
array.add("4");
array.add("5");
array.add("6");
arrayOfArrays.add(array);
System.out.println(arrayOfArrays);

And it prints:

[[1, 2, 3]]
[[4, 5, 6], [4, 5, 6]]

And I don't need to rewrite it. It should looks like this:

[[1, 2, 3]]
[[1, 2, 3], [4, 5, 6]]

I'm facing for this problem very long time and I tried a lot of workarounds but I need some clever solution. Also I will appreciate any help.

And I have a second question. How to add it in cycle? Because it has the same output as in the first case. For example:

for (int i = 0; i < array.size() - 1; i++) {
    arrayOfArrays.add(swap(array, i, i+1));       
}

2 Answers 2

2

You are adding the same ArrayList instance twice to the outer List.

You need to create two distinct ArrayList instances to add to your arrayOfArrays.

Replace

array.clear();

with

array = new ArrayList<>();
Sign up to request clarification or add additional context in comments.

Comments

1

You should be aware that you're just using the same array object, and add it to the arrayOfArrays twice, that why it prints out the same thing twice.

What you need is actually this:

    ArrayList<ArrayList<String>> arrayOfArrays = new ArrayList<>();

    ArrayList<String> array1 = new ArrayList<>();
    array1.add("1");
    array1.add("2");
    array1.add("3");
    arrayOfArrays.add(array1);
    System.out.println(arrayOfArrays);

    ArrayList<String> array2= new ArrayList<>();
    array2.add("4");
    array2.add("5");
    array2.add("6");
    arrayOfArrays.add(array2);
    System.out.println(arrayOfArrays);

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.