so ein stattliches Posting zusammengeschraubt, Problem auf die richtige Codestelle zurückgeführt
und zumindest Zusammenhang zur Liste von Songs hergestellt, aber da dann Ende des Gedankengangs?
‘Liste in Ordnung’ wird sich letztlich als falsche Aussage erweisen, aber warum überhaupt so ein sicheres Gefühl dazu,
einfach den Fakten folgen, von außen freilich dann unbeeinflusst doch leichter:
es gibt eine ConcurrentModificationException, das sollte jede eigene Überzeugung erstmal zertrümmern, Neubewertung schadet nie,
wenn nicht die Welt Kopf steht dann bedeutet das, dass in der Liste etwas verändert wurde,
-> was ist das für eine Liste, wo kommt sie her, wer kennt sie noch und fügt was ein,
nebenläufige Threads wie meist hier sicher keine Frage, höchstwahrscheinlich und einfach ist immer der Schleifencode der Methode selber anzuschauen,
dort ja auch reichlich Verdächtige (getTableModel()).addRow() fügt irgendwas irgendwo ein, schließlich auch noch songList.add(song); )
wo kommt denn der Parameter her, was ist das für eine Liste?
der StackTrace zeigt dass vorher Methode sort() dranwar, kurzes Spiel:
addFiles(songList);
die Methode addFiles() wird also mit dem Instanzattribut songList ausgeführt,
dort wird jeder Eintrag in DIESELBE Liste wieder einfügt,
sei froh dass du die billige ConcurrentModificationException bekommst, sonst evt. Endlosschleife, immer neu hinein und neu hineinzufügen
wenn du schon ein Instanzattribut songList hast, dann ist es besser zu vermeiden, dieses als Attribut an eine andere Methode der eignen Klasse zu übergeben,
addFiles() kann doch genauso mit songList arbeiten, machst du dort ja auch,
dass du songList als zwei verschiedene Dinge benutzt ist ein Dilemma was du erstmal fachlich klären musst, was soll denn passieren?
eine Liste kann doch nicht gleichzeitig neue (zu übertragene) Einträge wie auch alte (bereits übertragene) Einträge enthalten
addFiles(File[]) erstellt dagegen seine eigene ArrayList, da mag es funktionieren, aber sort() ist bisher anders,
was genau planst du?
int anzahlSongs = songList.size();
sieht auch etwas komisch aus, die Bedingung dazu ist ziemlich unabhängig davon, welchen Song du gerade aus der Parameter-Liste bearbeitest
songList zu sortieren ohne das TableModel zu ändern kann auch böse enden,
verzichte vielleicht lieber auf eine eigene songList, lasse allein das TableModel eine Liste der Songs verwalten,
dazu bietet sich ein eigenes TableModel mit getValueAt()-Methode an,
schau dir hier an
JTable (Tutorial)© – Byte-Welt Wiki
wie ein TableModel für Vehicel-Objekte erstellt wird,
die Objekte können direkt genutzt werden, Liste (oder da veraltet Vector) vorgehalten, Sortierung in Model möglich,
auch ‘musikDateienTabelle.getColumn(“Titel”).getModelIndex()’ usw. fällt weg