2015-08-09 4 views
1

У меня есть список массива из списка массива:Добавление элементов в список массива

ArrayList<ArrayList<Character>> NodesAndServices = new ArrayList<ArrayList<Character>>(); 

Я хочу, чтобы добавить eachRow из NodesAndServices другого ArrayList allChars:

List<Character> allChars = new ArrayList<Character>(); 

    for (int i = 0; i < NodesAndServices.size(); i++) { 
    List<Character> eachListRow = NodesAndServices.get(i); 

    for (List<Character> chr : eachListRow) { //Error 
     for (char ch : chr) { 
      allChars.add(ch); 
     } 
    } 
} 

Но получить у компиляции ошибки времени:

required: java.util.list 
found: java.lang.character 

UPDATE

for (int i = 0; i < NodesAndServices.size(); i++) { 
    List<Character> eachListRow = NodesAndServices.get(i); 

    for (Character chr : eachListRow.get(i)) { //Error,foreach not applicable to type character 

      allChars.add(each); 
    } 
} 
+2

Не имеет отношения к вопросу, но 'NodesAndServices' должен начинаться с строчной буквы для соответствия соглашениям Java. – Joffrey

ответ

1
for (List<Character> chr : eachListRow) { //Error 

При написании усовершенствованной for цикла, как этот, переменной цикла chr будет принимать значение каждого элемента коллекции eachListRow, который является List<Character>. Поэтому chr должен быть типа Character, а не List<Character>.

Тогда вы поймете, что вам даже не нужен вложенный цикл:

for (Character chr : eachListRow) { // OK 
    allChars.add(ch); 
} 

Примечание: Вы также можете использовать расширенный for цикл для первого цикла, что приводит к следующему коду, который гораздо приятнее читать:

List<Character> allChars = new ArrayList<Character>(); 

for (List<Character> eachListRow : NodesAndServices) { 
    for (Character chr : eachListRow) { 
     allChars.add(ch); 
    } 
} 
1

eachListRow не является списком списков. Попробуйте это:

for (Character chr : eachListRow) {... 

Update:

for (int i = 0; i < nodesAndServices.size(); i++) { 
     List<Character> eachListRow = nodesAndServices.get(i); 

     for (Character chr : eachListRow) { 
      allChars.add(chr); 
     } 
    } 
+0

Я получаю эту ошибку: 'foreach не относится к типу символа' – Sajad

+0

@ S-H, удалите эту строку ошибки, она избыточна, потому что вы уже получили символ в 'chr'. Просто добавьте 'chr' в список результатов. – ka4eli

+0

См. 'Update .....' – Sajad

Смежные вопросы