CSV Daten in ArrayList speichern und sortieren..

chillazz

Mitglied
Guten Abend,

ich habe ein Problem und zwar geht es darum:
Ich will eine CSV Datei auslesen und in eine ArrayList speichern... Dies funktioniert auch... Ich will jetzt aber diese ArrayList sortieren (habe ich auch geschaft aber leider sortiert er mir immer nur die erste Spalte der Datei). Ich würde aber gerne die dritte Spalte SOrtiert haben.

CSV Dateiinhalt sieht so aus:
Frequenz;Kanal;Qualitaet;Programm;Anbieter
198500;8a;58;PHOENIX;ARD
198500;8b;58;Bayerisches FS;ARD
198500;8c;58;SWR Fernsehen RP;ARD
602000;37c;91;arteEinsExtra;ARD
658000;44a;10;Bayerisches FS;SWR

Mein Quellcode bis jetzt:
public void readFileData() {

// Einlesen des Files und spliten
FileReader myFile = null;
BufferedReader buff = null;
final List<String> lines = new ArrayList<String>();

try {
myFile = new FileReader("Kanalscan.csv");
buff = new BufferedReader(myFile);
String line;
while ((line = buff.readLine()) != null) {
System.out.println(line); // kontrolle was eingelesen

lines.add(line);
}

Collections.sort(lines, Collator.getInstance());
System.out.println(lines);

} catch (IOException e) {
System.err.println("Error2 :" + e);
} finally {
try {
buff.close();
myFile.close();
} catch (IOException e) {
System.err.println("Error2 :" + e);
}
}

final String[][] valuesArray = new String[lines.size()][];
int cnt = 0;
for (final String line : lines) {
valuesArray[cnt++] = line.split(",");
}



// Ausgabe des Array
// for (String[] arr : valuesArray) {
// System.out.println(Arrays.toString(arr));
//
// }

}

Es soll am Ende einfach nach "Qualität" sortiert werden.
Es wäre echt super wenn mir jemand dabei helfen könnte weil ich absolut keine idee habe.

Liebe Grüße
 
Zuletzt bearbeitet:
Hi,

du speicherst immer eine Zeile in der ArrayList, ergo kann er natürlich auch nur nach der "ersten" Spalte sortieren. Im Prinzip kennt deine ArrayList ja nicht mehr die einzelnen Spalten sondern nur die Zeilen
 
Schau dir mal Collections.sort() an.

Dann musst du nur noch eine funktion schrieben, die du als comparator an die sort()-Methode übergibst.
 
Gehe folgendermaßen vor:

Schreib dir erst mal ein Bean (eine String Variable für jede Spalte mit getter und Setter Methoden), dass deine Daten der csv Datei abbildet. Also eine Zeile deiner Datei.

Dann speicher Objekte (eins pro Zeile deiner Datei) dieses Beans in deiner ArrayListe.

Dann schreib dir ein Comparator für dein Bean, der nach der Spalte die du möchstest sortiert und den du dann mit der statischen Sortiermethode der Klasse Collections anwendest.

^^

So musst du vorgehen um alles sauber zu implementieren.

Gruß
Flo
 
kannst du mir bitte mal schreiben wie ich aus der csv datei einzelme spalten der set methode übergeben kann?
also wie kann ich eine spalte ansprechen?
 
Aus der CSV-Datei glaub ich gar nicht. Wenn du aber schon zeilenweise einliest, dann extrahier doch mit einem StringTokenizer die einzelnen Spalten aus der gerade eingelesenen Zeile
 
also mein problem ist einfach dass ich eine csv datei einlese...
funktioniert auch..
die mag ich speichern (wo ist mir egal also ob. liste oder string)
aber dann mag ich nach der 3 spalte sortieren lassen...

hast du ne gute idee mit bissl code?
 
Zurück