Запись нескольких массивов в Arraylist - PullRequest
0 голосов
/ 12 марта 2020

Всякий раз, когда я пытался записать массив в любой тип списка, я получаю один и тот же вывод, и мне кажется, что я не понимаю, где я делаю неправильно. По какой-то причине каждый экземпляр массива в Arraylist равен последнему циклу for для l oop. Вот пример кода

public class Test {
    public static void main(String[] args) {
        ArrayList<String[]> al = new ArrayList<>();
        String[] a = new String[2];

        for (int i = 0; i < 4; i++) {
            a[0] = "boo";
            a[1] = String.valueOf(i);
            al.add(a);
        }
    }
}

С выводом

[[boo, 3], [boo, 3], [boo, 3], [boo, 3]]

Ответы [ 2 ]

0 голосов
/ 12 марта 2020

Вот проблема. Вам нужно создать массив внутри l oop. В противном случае вы перезаписываете тот же самый.

public class Test {
    public static void main(String[] args) {
        ArrayList<String[]> al = new ArrayList<>();

        for (int i = 0; i < 4; i++) {
            String[] a = new String[2];
            a[0] = "boo";
            a[1] = String.valueOf(i);
            al.add(a);
        }
    }
}
0 голосов
/ 12 марта 2020

Переместите свой массив в свой для l oop, в противном случае вы просто используете ту же самую переменную

for (int i = 0; i < 4; i++) {
    String[] a = new String[2];
    a[0] = "boo";
    a[1] = String.valueOf(i);
    al.add(a);
}
...