Ich versuche, ein einfaches Parsing-Dienstprogramm zu erstellen, das eine zweispaltige CSV-Datei konvertiert und in eine Karte einfügt.Wie konvertieren CSV in eine Karte mit Java 8 Stream
public Map<String, String> getMapFromCSV(final String filePath) throws IOException {
return Files.lines(Paths.get(filePath))
.map(line -> line.split(","))
.collect(Collectors.toMap(line -> line[0], line -> line[1]));
}
Wie man sehen kann, um einen Strom I von Strings bin Erstellen jede Zeile auf einem Komma abgrenzt und in ein String-Array Transformieren und schließlich zu dem Index 0 und Wert Index 1.
AbbildungsschlüsselAus irgendeinem Grund, wenn ich diesen Test ausführen, ist der tatsächliche Wert Null. Ich habe ungültigen filePath ausgeschlossen, weil es in einem anderen Komponententest einwandfrei funktioniert und der Schlüsselwert in der CSV vorhanden ist. Ich habe es jetzt seit ein paar Stunden angestarrt, dachte, vielleicht könnte jemand hier meinen Fehler aufzeigen.
Auch bin ich ziemlich neu in Java 8, also wenn jemand eine bessere/sauberere Art des Schreibens weiß, würde ich das Feedback schätzen.
Sie verlieren hier einen Dateideskriptor. 'Files.lines()' sollte in einer try-with-resources-Anweisung geöffnet werden. – fge
Gibt es Whitespace in der Datei? – rgettman
'null' kann darauf hinweisen, dass' map.get (key) '' key' in map nicht finden konnte. Versuchen Sie, die gesamte von 'util.getMapFromCSV (filePath) 'zurückgegebene Map zu drucken. – Pshemo