Перебор списка строк в Java? - PullRequest
4 голосов
/ 27 октября 2010

Я использую OpenCSV для чтения данных из файла CSV и использую некоторые примеры кода с домашней страницы:

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

И сейчас я пытаюсь пройти через этоперечислите и распечатайте каждую запись.Но я не могу понять код для этого.

Может ли кто-нибудь объяснить мне, как я должен это делать, потому что я просто не могу решить это.

Ответы [ 6 ]

7 голосов
/ 27 октября 2010

Предполагая, что вы хотите вывести каждую запись каждой строки в свою собственную строку:

    List<String[]> myEntries = reader.readAll();
    for (String[] lineTokens : myEntries) {
        for (String token : lineTokens) {
            System.out.println(token);
        }
    }
2 голосов
/ 27 октября 2010

Вы пытались использовать итератор? Это должно быть примерно так:

Iterator it = myEntries.iterator();
while(it.hasNext()){
  System.out.println(it.next());
}
2 голосов
/ 27 октября 2010

Разве вы не можете сделать: 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
1 голос
/ 27 октября 2010

Вы должны использовать дженерики с CSVReader, если это возможно. readAll() фактически возвращает List<String[]>, а не List<String>. Тогда вам просто нужно:

for (String[] row : myEntries) {
  System.out.println(Arrays.toString(row));
}
0 голосов
/ 11 апреля 2018

В 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 () для параллельного выполнения. В интернете есть множество статей, которые будут выполняться быстрее, и ответ таков: «это зависит» (в основном от количества элементов в списке)

0 голосов
/ 27 октября 2010

Вы можете сделать что-то с этим эффектом.Я добавил синхронизацию на итератор.

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`
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...