Hallo,
Wie ist Eure Erfahrung mit LinkedHashMap und ArrayList bzgl. der Geschwindigkeit?
Ich habe eine Liste mit ca. 1000 Objekten. Dabei ist mir aufgefallen, dass wenn ich die Liste komplett durchlaufe, ist ArrayList immer noch schneller als mit einer LinkedHashMap.
Beispiel ArrayList:
ArrayList<Box> boxes = new ArrayList<Box>();
for(int i=0;i<boxes.size();i++) System.out.println(boxes.boxname);
Beispiel LinkedHashMap:
Enumeration e = boxes.keys();
while (e.hasMoreElements()) {
String name = (String)e.nextElement();
System.out.println(name + " --> " + boxes.get(name).boxname );
}
Problem ist aber... wegen der Geschwindigkeit müsste ich somit eine ArrayList verwenden, wenn die ganze Liste durchlaufen werden soll. Nur ist ja wohl eine LinkedHashMap viel schneller, wenn ich nur 1 Objekt aus den 1000 erhalten möchte ( boxes.get("Boxname") )
Grund ist... es sind OpenGL Boxen die 60 Mal in der Sekunde neu gezeichnet werden sollen, aber ich auch einzelne Objekte aus der Liste suchen lasse.
1. Soll ich trotz des Geschwindigkeitsverlustes (ca. 5-8 FPS von 60 FPS) eine LinkedHashMap verwenden?
2. Lohnt sich eine LinkedHashMap nicht bei max. 25 Objekten in der Liste (ist dann eine ArrayList immer noch bei einem Komplett-Suchdurchlauf schneller)?
Wäre die beste Lösung man führt 2 Listen parallel, eine LinkedHashMap (für gezielte Objektsuche) und eine ArrayList für komplette Druchläufe, oder gibt es noch eine bessere Lösung für mein Problem?
Wie ist Eure Erfahrung mit LinkedHashMap und ArrayList bzgl. der Geschwindigkeit?
Ich habe eine Liste mit ca. 1000 Objekten. Dabei ist mir aufgefallen, dass wenn ich die Liste komplett durchlaufe, ist ArrayList immer noch schneller als mit einer LinkedHashMap.
Beispiel ArrayList:
ArrayList<Box> boxes = new ArrayList<Box>();
for(int i=0;i<boxes.size();i++) System.out.println(boxes.boxname);
Beispiel LinkedHashMap:
Enumeration e = boxes.keys();
while (e.hasMoreElements()) {
String name = (String)e.nextElement();
System.out.println(name + " --> " + boxes.get(name).boxname );
}
Problem ist aber... wegen der Geschwindigkeit müsste ich somit eine ArrayList verwenden, wenn die ganze Liste durchlaufen werden soll. Nur ist ja wohl eine LinkedHashMap viel schneller, wenn ich nur 1 Objekt aus den 1000 erhalten möchte ( boxes.get("Boxname") )
Grund ist... es sind OpenGL Boxen die 60 Mal in der Sekunde neu gezeichnet werden sollen, aber ich auch einzelne Objekte aus der Liste suchen lasse.
1. Soll ich trotz des Geschwindigkeitsverlustes (ca. 5-8 FPS von 60 FPS) eine LinkedHashMap verwenden?
2. Lohnt sich eine LinkedHashMap nicht bei max. 25 Objekten in der Liste (ist dann eine ArrayList immer noch bei einem Komplett-Suchdurchlauf schneller)?
Wäre die beste Lösung man führt 2 Listen parallel, eine LinkedHashMap (für gezielte Objektsuche) und eine ArrayList für komplette Druchläufe, oder gibt es noch eine bessere Lösung für mein Problem?
Zuletzt bearbeitet: