迭代Java中的字符串列表?

时间:2010-10-26 21:36:23

标签: java list csv iterator

我正在使用OpenCSV从CSV文件中读取数据并使用主页中的一些示例代码:

CSVReader reader = new CSVReader(new FileReader("stockInfo.csv"));
List myEntries = reader.readAll();

我现在正试图遍历此列表并打印出每个条目。但我似乎无法弄清楚执行此操作的代码。

有人可以向我解释我应该如何做这件事,因为我似乎无法解决这个问题。

6 个答案:

答案 0 :(得分:7)

假设您想要将每行的每个条目输出到它自己的行:

    List<String[]> myEntries = reader.readAll();
    for (String[] lineTokens : myEntries) {
        for (String token : lineTokens) {
            System.out.println(token);
        }
    }

答案 1 :(得分:2)

你不能这样做: 1)

for(int i = 0; i < myEntries.size(); i++){
  myEntries.get(i); // do something else here
}

2)

for(String s: myEntries)
   // Do work on s here

答案 2 :(得分:2)

您是否尝试过使用Iterator? 它应该是这样的:

Iterator it = myEntries.iterator();
while(it.hasNext()){
  System.out.println(it.next());
}

答案 3 :(得分:1)

如果可能,您应该使用CSVReader的泛型。 readAll()实际上会返回List<String[]>而不是List<String>。然后,你只需要:

for (String[] row : myEntries) {
  System.out.println(Arrays.toString(row));
}

答案 4 :(得分:0)

你可以做一些这样的事情。我在迭代器上添加了同步。

List<String[]> myEntries = reader.readAll();
Iterator<String[]> iter = myEntries.iterator();
synchronized (iter) {
    while (iter.hasNext()) {
        String[] items = iter.next();

        for (String item: items) { //foreach loop
            //Work with `item`
        }
    }
}

答案 5 :(得分:0)

在Java 8及以上版本中,您也可以

    List<String> s = new LinkedList<>();
    s.stream().forEach(System.out::print);

    List<String> s = new LinkedList<>();
    s.stream().forEach(s ->
            System.out.print(s)
    );

可以使用paralleStream()代替或使用stream()来进行并行执行。互联网上有很多文章会更快地执行,答案是:&#34;它取决于&#34; (主要是根据列表中的项目数量)