我有一个数组列表的数组列表:
ArrayList<ArrayList<Character>> NodesAndServices = new ArrayList<ArrayList<Character>>();
我想将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
更新
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);
}
}
答案 0 :(得分:1)
a
不是列表列表。试试这个:
eachListRow
<强>更新强>
for (Character chr : eachListRow) {...
答案 1 :(得分: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);
}
}