Hi @ all,
mein Problem lässt sich einfach erklären, aber nicht ganz so einfach beheben. "Zumindest nicht von mir
".
Ich habe eine JList, in der Daten dargestellt werden. Die Daten werden aus einem CSV-File gelesen, sortiert und anschließend in die Liste geschrieben. Da das Programm später aber mit 20.000 bis 50.000 Datensätzen arbeiten muss, habe ich mit 20.000 Datensätzen einen Test gestartet. Nun ist es aber so, dass das hHinzufügen zur Liste ziehmlich lange dauert (1-3 min). Das tritt aber nur sporadisch auf und einen genauen Weg zur Reproduktion konnte ich noch nicht feststellen.
Hier meine Methode, die meine Daten zur Liste hinzufügt:
Kurze Erläuterung unbekannter Faktoren:
Hoffe es kann mit jemand von euch helfen. Ich komme an der Stelle nämlich nicht mehr weiter.
Vor allem da der Fehler nur sporadisch auftritt.
Vielen Dank schonmal im Voraus.
Greetz
Crasher
mein Problem lässt sich einfach erklären, aber nicht ganz so einfach beheben. "Zumindest nicht von mir
Ich habe eine JList, in der Daten dargestellt werden. Die Daten werden aus einem CSV-File gelesen, sortiert und anschließend in die Liste geschrieben. Da das Programm später aber mit 20.000 bis 50.000 Datensätzen arbeiten muss, habe ich mit 20.000 Datensätzen einen Test gestartet. Nun ist es aber so, dass das hHinzufügen zur Liste ziehmlich lange dauert (1-3 min). Das tritt aber nur sporadisch auf und einen genauen Weg zur Reproduktion konnte ich noch nicht feststellen.
Hier meine Methode, die meine Daten zur Liste hinzufügt:
Java:
public void showTrains(){
this.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
readCSV("data/trains/collection/trainCollection.csv");
closeBufferedReader();
model.clear();
sortData.clear();
if(isEmpty == false){
try{
//Züge in sortData schreiben
for(int i = 0;i<(cast.length);i++){
sortData.add(train[i][0]);
}
//Die Züge sortieren
Collections.sort(sortData, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return Integer.valueOf(o1).compareTo(Integer.valueOf(o2));
}
});
//Sortierung der Züge in der Liste darstellen
for(Iterator it = sortData.iterator(); it.hasNext();){
model.addElement(it.next().toString());
}
}catch(Exception e){
JOptionPane.showMessageDialog(this, "Fehler beim Hinzufügen der Züge zur Liste.", "Es is ein Fehler aufgetreten!", JOptionPane.ERROR_MESSAGE);
ErrorLog errorLogging = new ErrorLog();
errorLogging.writeErrorLog(e.toString());
}
}
this.setCursor(Cursor.getDefaultCursor());
}
Kurze Erläuterung unbekannter Faktoren:
- Die Variable isEmpty gibt an, ob die Liste überhaupt nachgeladen werden muss. (Habe ich zur
Einschränkung der Perfomancebelastung eingebaut) - model ist in dem Fall mein DefaultListModel
- sortData meine ArrayList, die die zu sortierenden Daten enthält
- Methode readCSV, liest die CSV aus und schreibt alle Daten in einen Array
Hoffe es kann mit jemand von euch helfen. Ich komme an der Stelle nämlich nicht mehr weiter.
Vor allem da der Fehler nur sporadisch auftritt.
Vielen Dank schonmal im Voraus.
Greetz
Crasher