Collections ArrayList oder Hashmap mittel Collections.sychronised

flodo

Mitglied
Hallo folgende Frage
Ich versuche ne sychronisedList zu erstellen (wird dann an mehrere Thread übergeben

mache das so:

Java:
private static ArrayList<Company> companies =  (ArrayList<Company>) Collections.synchronizedList(new ArrayList<Company>());
private static HashMap<Integer,Float> curve = (HashMap<Integer, Float>) Collections.synchronizedMap(new HashMap<Integer,Float>());


und als fehlermeldung gibt er mir
Java:
Exception in thread "main" java.lang.ClassCastException: java.util.Collections$SynchronizedRandomAccessList cannot be cast to java.util.ArrayList

für die ArrayList aus
Bei der Hasmap selbes Problem. Hat da jemand ne Lösung?

Danke
 
schöner Fehler, da kann ich nicht wiederstehen, auch wenn das gleich jeder andere auch beantwortet 😉

Collections.synchronizedList() gibt keine ArrayList zurück, sondern eine andere Liste,
wenn du mit dem sowieso zu empfehlenden allgemeinen Interface List arbeitest, dann gibts keine Probleme:
Java:
List<Company> companies = Collections.synchronizedList(new ArrayList<Company>());
bei Map analog

und nebenbei immer gerne:
es gibt absolut keine generischen Casts, innerhalb von ()-Cast-Klammern kann man sich jedweges <> immer sparen
 
schöner Fehler, da kann ich nicht wiederstehen, auch wenn das gleich jeder andere auch beantwortet 😉

Collections.synchronizedList() gibt keine ArrayList zurück, sondern eine andere Liste,
wenn du mit dem sowieso zu empfehlenden allgemeinen Interface List arbeitest, dann gibts keine Probleme:
Java:
List<Company> companies = Collections.synchronizedList(new ArrayList<Company>());
bei Map analog

und nebenbei immer gerne:
es gibt absolut keine generischen Casts, innerhalb von ()-Cast-Klammern kann man sich jedweges <> immer sparen

cool danke
nur bei
Java:
List<Company> companies = Collections.synchronizedList(new ArrayList<Company>());
verlangt er von mir, dass ich den Type bei List<Company> entferne.

denke mal aber, dass ich den brauche
 
hast du vorher schon
Java:
List<Company> companies = new ArrayList<Company>();
ausprobiert? wenn dort auch Fehler, dann hats mit Collections.synchronizedList() nichts zu tun,
ansonsten in der Tat bisschen komisch, kann dann erstmal nichts zu sagen
 
Jap auch bei

Java:
List<Company> companies = new ArrayList<Company>();


verlangt er, dass der Type entfernt wird weil
Code:
The type List is not generic; it cannot be parameterized with arguments <Company>
komisch, dass es bei Map funktioniert

EDIT: Ein Idioten Fehler meinerseits. Habe im eclipse das Falsche importiert. java.awt.List anstatt util.List :toll:

Sorry
 
Zuletzt bearbeitet:
und doch noch was eingefallen:
hast du zufällig java.awt.List oder eine eigene gleichnamige Klasse statt java.util.List importiert?
dann sollte die Warnung aber das geringere Problem sein,
sondern vor allem die Zuweisung der ArrayList nicht funktionieren, falls nicht auch eigene Klasse..

edit: na also
 

Zurück
Oben