我正在使用openCSV阅读器阅读csv文件。有一个方法readAll,它给出了List作为结果。
<img ng-src="{{vm.file.filePath}}" alt="{{vm.file.fileName}}" />
我想从中获取每个字符串。我试过了,但没有成功。
List<String[]> myEntries = reader.readAll();
它给我一个错误说,Iterator itr = myEntries.iterator();
while(itr.hasNext()) {
Object element = itr.next();
for(String temp:element)
System.out.println(temp);
}
无法应用于foreach
类型。如何从中获取字符串?
答案 0 :(得分:2)
列表元素的类型为String[]
。在声明中使用它:
Iterator<String[]> itr = myEntries.iterator();
...
String[] element = itr.next();
答案 1 :(得分:2)
如果解决问题的方法对您来说并不重要,我建议您使用foreach
语句:
for(String[] a : myEntries)
for(String s : a)
// do what you want to
否则,你应该写像
Iterator<String[]> iterator = myEntries.iterator();
while(itr.hasNext())
for(String temp : itr.next())
// Don't worry, itr.next() will be created only one time
// for an each iteration (while)
System.out.println(temp);
,看起来不漂亮,可能难以阅读。
答案 2 :(得分:0)
尝试以下代码,
for (String[] element : myEntries) {
for (String temp : element)
System.out.println(temp);
}
答案 3 :(得分:0)
reader.readAll().forEach(stringArray -> {
for(String element : stringArray){
System.out.println(element);
}
});
答案 4 :(得分:0)
最简单的方法是使用foreach循环,就像你对数组所做的那样:
for (String[] entry : myEntries) {
for (String temp : element) {
System.out.println(temp);
}
}
如果您确实需要Iterator,请不要使用原始类型:
for (Iterator<String[]> it = myEntries.iterator(); it.hasNext();) {
String[] entry = it.next();
for (String temp : entry) {
System.out.println(temp);
}
}
你应该总是在块周围使用花括号,即使你的块只有一条指令。这使得代码更具可读性,更易于维护,并有助于避免许多错误。
答案 5 :(得分:0)
如果您更喜欢Java 8,那么它就更具说明性。
myEntries.forEach(entries ->
Arrays.stream(entries).forEach(entry -> System.out.println(entry)));