如何迭代包含字符串数组的List

时间:2016-04-27 05:53:56

标签: java list foreach iterator

我正在使用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类型。如何从中获取字符串?

6 个答案:

答案 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)));