今天我在Java中使用for循环时有一种奇怪的体验,我真的无法解释。这是我的代码段:
List<String[]> list;
....
for (String[] tmp : list.get(0)) {
...
}
此代码段无法编译,因为list.get(0)
正在返回String
而不是String
的数组。但为什么呢?
答案 0 :(得分:3)
list.get(0)
返回一个String
的数组,所以当你迭代它时,你会得到单独的字符串:
for (String tmp : list.get(0)) {
...
}
如果遍历整个列表,则每次迭代都会得到一个String数组:
for (String[] tmp : list) {
...
}
答案 1 :(得分:1)
尝试迭代字符串数组
for (String[] tmp : list) {
...
}
或迭代第一个数组的字符串
for (String tmp : list.get(0)) {
...
}
答案 2 :(得分:0)
for (String[] tmp : list.get(0))
应该是
for (String tmp : list.get(0))
因为list.get(0)
是一个字符串数组,而不是字符串数组的数组。
答案 3 :(得分:0)
实际上,list.get(0)
并未按预期返回String
而是String[]
。 List<String[]> list
是List
String[]
。因此,list.get(0)
是String[]
。问题出在你的循环变量上。如果循环遍历String[]
,循环变量在循环期间保存单个元素的类型只是String
。
应该是:
List<String[]> list;
// ...
for (String el : list.get(0)) {
// ...
}
答案 4 :(得分:0)
当你调用list.get(0)时,它返回一个String数组。如果我扩展你的代码,它就像下面一样,
String[] strArr = list.get(0);
....
for (String[] tmp : strArr) { //compilation issue
...
}
显然哪个错误,因为strArr中的每个对象都是String,而不是String数组。