Hallo Zusammen,
hat jemand von Euch einen eleganten und zeit/speichereffizienten Vorschlag für einen Umgang mit einer ArrayList, die wiederum eine List enthält. Aus einer tsv-Datei wird jede einzelne Zeile ausgelesen und die einzelnen per tab getrennten Felder in einem Array abgelegt. Pro Zeile möchte ich zwei Felder auslesen und in einer ArrayList ablegen. Das aktuelle Problem (siehe Code) ist, daß ich die innere Liste mit .clear() leere, was aber dazu führt, daß auch der Wert innerhalb der ArrayList entfernt wird. Eine Kopie der inneren Liste ist entsprechend auch keine Lösung.
Das Ergebnis der ArrayList, die aus einer List bestehen soll, sollte wiefolgt aussehen:
[[wert1Zeile1,wert2Zeile1], [wert1Zeile2,wert2Zeile2]....]
Vielen Dank
hat jemand von Euch einen eleganten und zeit/speichereffizienten Vorschlag für einen Umgang mit einer ArrayList, die wiederum eine List enthält. Aus einer tsv-Datei wird jede einzelne Zeile ausgelesen und die einzelnen per tab getrennten Felder in einem Array abgelegt. Pro Zeile möchte ich zwei Felder auslesen und in einer ArrayList ablegen. Das aktuelle Problem (siehe Code) ist, daß ich die innere Liste mit .clear() leere, was aber dazu führt, daß auch der Wert innerhalb der ArrayList entfernt wird. Eine Kopie der inneren Liste ist entsprechend auch keine Lösung.
Java:
public static List<List<String>> getBuffReader(String file) {
System.out.println("inside getBuffer");
List<List<String>> outerL = new ArrayList<List<String>>();
List<String> tsvList = new ArrayList<String>();
BufferedReader tsvReader = null;
if (tsvReader == null) {
try {
tsvReader = new BufferedReader(new InputStreamReader(
new FileInputStream(file), "utf-8"));
try {
String line = tsvReader.readLine();
System.out.println("test");
while (line != null) {
tsvList.clear();
String splitarray[] = line.split("\\t");
System.out.println(splitarray.length);
if (splitarray.length == 7) {
tsvList.add(splitarray[5]);
tsvList.add(splitarray[6]);
} else if (splitarray.length == 8) {
tsvList.add(splitarray[5]);
tsvList.add(splitarray[7]);
} else if (splitarray.length >= 9) {
tsvList.add(splitarray[5]);
tsvList.add(splitarray[9]);
}
outerL.add(tsvList);
System.out.println("inside tsv");
line = tsvReader.readLine();
}
} finally {
tsvReader.close();
}
} catch (IOException e) {
}
}
return outerL;
}
Das Ergebnis der ArrayList, die aus einer List bestehen soll, sollte wiefolgt aussehen:
[[wert1Zeile1,wert2Zeile1], [wert1Zeile2,wert2Zeile2]....]
Vielen Dank