Java добавление данных во вложенный массив - PullRequest
1 голос
/ 15 декабря 2011

Как я могу использовать ту же строку массива для добавления значений во вложенный массив tableValues, поскольку команда clear удаляет данные в строке.

Спасибо

    ArrayList<ArrayList<String>> tableValues = new ArrayList<ArrayList<String>>();
    ArrayList<String> row = new ArrayList<String>();

    row.add("a");
    row.add("b");
    row.add("c");
    tableValues.add(row);
    row.clear();

    row.add("d");
    row.add("e");
    row.add("f");
    tableValues.add(row);
    row.clear();

    row.add("g");
    row.add("h");
    row.add("i");
    tableValues.add(row);
    row.clear();

    System.out.println(tableValues);

Ответы [ 2 ]

3 голосов
/ 15 декабря 2011

Я уверен, что вы действительно хотите добавить три разных ArrayLists, поэтому измените каждый row.clear() на:

row = new ArrayList<String>();

Зачем вам хотеть"использовать одну и ту же строку массива для добавления значений"? Я не понимаю, почему вы хотите, чтобы ваш верхний уровень ArrayList в основном содержал одну и ту же ссылку три раза. Почему вы не хотите, чтобы они были ссылками на независимые списки?

0 голосов
/ 15 декабря 2011

Используйте что-то вроде

ArrayList<String> row;

row = new ArrayList<String>();
// fill row
tableValues.add(row);

row = new ArrayList<String>();
// fill row
tableValues.add(row);

Таким образом, вам не нужно указывать переменную кода для каждой строки. или поместите его в цикл

while(codnition) { // or for or do {} while(condition);
   List<String> row = new  ArrayList<String>();
   // fill row
   table.add(row);
}

Таким образом, существует единственное имя для текущей добавленной строки, но область действия этой переменной находится только внутри данной итерации цикла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...