Dziwna rzecz dzieje się w moim kodzie i nie jestem po prostu pewna co się dzieje. Mam plik, który wygląda tak:Java List dodaje ostatni rekord, duplikuje go dla liczby rekordów w pliku
id;state;city;total_pop;avg_temp
1;Florida;;120000;76
2;Michigan;Detroit;330000;54
3;New Jersey;Newark;;34
Mój parser java powinien utworzyć listę map jako wynik i powrót. Ale jedyną rzeczą, która zostanie zwrócona, jest ostatni rekord w pliku powtarzany dla liczby wierszy w pliku. Czy ktoś może spojrzeć na mój kod i oświecić mnie, co się dzieje? Z góry dziękuję.
public class FileParserUtil {
public List<Map<String, String>> parseFile(String fileName, char seperator)
throws IOException {
CSVReader reader = new CSVReader(new FileReader(fileName), seperator);
Map<String, String> record = new HashMap<String, String>();
List<Map<String, String>> rows = new ArrayList<Map<String, String>>();
String[] header = reader.readNext();
String[] nextLine;
while ((nextLine = reader.readNext()) != null) {
for (int i = 0; i < header.length; i++) {
record.put(header[i], nextLine[i]);
}
System.out.println("--------Here is the record: ---------");
System.out.println(record);
rows.add(record);
System.out.println("--------Here are the rows: ---------");
System.out.println(rows);
}
reader.close();
return rows;
}
}
Oto wynik konsola z powyższym okresie od głównej metody ...
--------Here is the record: ---------
{id=1, avg_temp=76, state=Florida, total_pop=120000, city=}
--------Here are the rows: ---------
[{id=1, avg_temp=76, state=Florida, total_pop=120000, city=}]
--------Here is the record: ---------
{id=2, avg_temp=54, state=Michigan, total_pop=330000, city=Detroit}
--------Here are the rows: ---------
[{id=2, avg_temp=54, state=Michigan, total_pop=330000, city=Detroit}, {id=2, avg_temp=54, state=Michigan, total_pop=330000, city=Detroit}]
--------Here is the record: ---------
{id=3, avg_temp=34, state=New Jersey, total_pop=, city=Newark}
--------Here are the rows: ---------
[{id=3, avg_temp=34, state=New Jersey, total_pop=, city=Newark}, {id=3, avg_temp=34, state=New Jersey, total_pop=, city=Newark}, {id=3, avg_temp=34, state=New Jersey, total_pop=, city=Newark}]
Dziękuję za wyjaśnienie. –
serdecznie zapraszamy ... chciałbym również zaproponować utworzenie nowej klasy do przechowywania wartości z pliku i utworzenie nowej instancji tej klasy dla każdego rekordu. W ten sposób kod będzie znacznie czystszy. –
Czy istnieje sposób, aby to przyspieszyć? Wydaje się być powolny. –