Array vs. ArrayList vs. HashMap

White_Fox

Top Contributor
Mahlzeit allerseits.

Ich hätte mal eine Frage bez. der Zugriffsgeschwindigkeiten. Ich werde vorraussichtlich mit einigen zehn bis einigen hunderttausend Objektinstanzen herumhantieren und wollte daher mal fragen, ob es sich in der Iterationsgeschwindigkeit irgendwie bemerkbar macht ob man da ein Array, eine ArrayList oder z.B. eine HashMap<String, String> benutzt.
Oder optimiert der Javacompiler so stark, daß das egal ist?

Es soll am Ende eine Tabelle in einer JavaFX-GUI mit einer Handvoll Spalten, aber eben einigen zehn bis einigen hunderttausdend Zeilen gefüllt werden.
 
X

Xyz1

Gast
Der Geschwindigkeits-Overhead zwischen Array und ArrayList ist bei so vielen Objekten vernachlässigbar. Also ja ArrayList ist die geeignete Wahl.
 

White_Fox

Top Contributor
Abgesehen davon, dass ich nichts sinvolles beitragen kann, warum sollte man auch nur mehr als 100 Zeilen füllen, die schaut doch kein Mensch durch.
Ja, das ist richtig. Ich möchte dem Benutzer aber die Möglichkeit geben, sich die Ausgabe anschauen zu KÖNNEN. (Danach verschwinden die Daten in irgendeiner Datenbank oder so, und da sieht man sie tatsächlich nicht wieder. Jedenfalls nicht zusammenhängend.)

Ansonsten vielen Dank. :)
 

mrBrown

Super-Moderator
Mitarbeiter
Abgesehen von Big O solltest du die die Laufzeiten der Java-Implementierungen nicht ignorieren - da gibt es durchaus ziemlich heftige Unterschiede, zB bei ArrayList und LinkedList.
 
K

kneitzel

Gast
Also bei großen n ist es vernachlässigbar, ob Operationen in O(1), O(n) oder O(n Log n) laufen? Interessante Auffassung ...
 

mrBrown

Super-Moderator
Mitarbeiter
Abgesehen davon kann durchaus auch ein O(N) bei der einen Variante deutlich länger dauern als ein O(N) bei der anderen (und gleiches für O(1)/O(1) - je nachdem was man macht, sollte man das im Hinterkopf behalten.
 

Der Wissende

Mitglied
Also bei großen n ist es vernachlässigbar, ob Operationen in O(1), O(n) oder O(n Log n) laufen? I
Die Frage war, ob hinsichtlich Iterationsgeschwindigkeit einen Unterschied zwischen Array, ArrayList oder z.B Hashmap gibt. @Tobias-nrw hat nur gesagt, dass es bei großen n keine großen Unterschied zwischen Array und ArrayList gibt. Was ja bei iterieren stimmt.

Du denkst jetzt glaub ich daran, dass bei einer UI mit mit Tabelle es nicht nur um iterieren geht sondern auch andere Operationen gibt, z.B. wenn man in eine Zelle klickt. Dann macht es schon einen Unterschied.

Ich hab gelernt, dass man bei @Tobias-nrw alles ganz genau lesen muss, sonst geht es den Rest des Threads nur noch darum.

@White_Fox
So back to Topic, ist es wirklich nötig, alle Daten GLEICHZEITIG im Speicher zu haben oder nur die Daten die gerade auf den Monitor passen und dann nachladen?
Ich kenn mich nicht wirklich aus mit JavaFX aber ein Stichwort für daten nachladen wenn das Ende vom Bildschirm erreicht ist, ist "infinite scroll". Beispielsweise das hier http://programmingtipsandtraps.blog...nite-scrolling-with-javafx-tableview.html?m=1

Vielleicht hilft dir das etwas weiter
 
X

Xyz1

Gast
Danke schön... Ich lese die Fragen ja auch genau, und reime mir nicht einfach so etwas zusammen...
 

White_Fox

Top Contributor
So back to Topic, ist es wirklich nötig, alle Daten GLEICHZEITIG im Speicher zu haben oder nur die Daten die gerade auf den Monitor passen und dann nachladen?
Ich will die Daten nur darstellen, daß sich der Benutzer nochmal angucken kann was da gleich exportiert wird. Ändern soll der Benutzer dort nichts, auch später nicht und nicht eventuell irgendwann einmal. Ich würde später allerdings auch einige Filter implementieren wollen, daß sich der Benutzer auch gezielt etwas zum Betrachten suchen kann.

Die Daten werden allerdings so oder so zu diesem Zeitpunkt im Speicher verweilen (allerdings nicht für lange), ich sehe bisher keine Möglichkeit dies anders anzugehen. Ein schrittweises Nachladen ist aber in Ordnung, das werde ich mir mal ansehen. Danke.
 
X

Xyz1

Gast
Also ich finde es auch nicht unbedingt so sinnvoll so viele Daten darstellen zu wollen aber wenn es wirklich nur um das Einfügen in ArrayList + 1x alle Elemente iterieren geht dann ist eine ArrayList ausreichend. Method calls sind nicht unbedingt ressourcenintensiv.
 
K

kneitzel

Gast
Es geht aber jetzt auch um weiter Funktionalitäten wie Filtern und so.

Aber unabhängig von der Datenhaltung: Die Komponenten müssen ja einiges machen und ich fürchte, dass die Controls sich da noch als Bottleneck erweisen könnten, so dass die Diskussion noch nicht wirklich greift. Wenn man eine erste konkrete Lösung hat und die Performance sieht, dann kann man analysieren, wo die zeit verbraten wird und sich dann im Anschluss Lösungen überlegen. (Gab es aber schon etwas ausführlicher als Gespräch direkt an den TE.)
 

White_Fox

Top Contributor
Ich werde das erstmal als ArrayList<HashMap<String, String>> implementieren. Wenn ich eine halbwegs lauffähige Version habe, stelle ich das gesamte Programm hier mal zur Diskussion. (Hab ich sowieso vor...)

Nachschlag:
Vielen Dank für die Denkanstöße bis hierher. :)

Nachschlag II:
Eine Frage noch: Wie kommt es eigentlich zur Bezeichnung O, bzw. BigO?
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
G jToggleButton in Array/ArrayList Allgemeine Java-Themen 12
S Array dynamisieren oder ArrayList verwenden? Allgemeine Java-Themen 17
L ArrayList mit String Arrays in ein Array umwandeln Allgemeine Java-Themen 1
H Elemente aus ArrayList in Array speichern Allgemeine Java-Themen 8
K Array in ArrayList Allgemeine Java-Themen 16
A Collections Array-Elemente in ArrayList kopieren ohne Schleife Allgemeine Java-Themen 7
D Performance: ArrayList vs. Array vs. "Eigene Liste&quot Allgemeine Java-Themen 8
G Array vs Arraylist Allgemeine Java-Themen 3
MQue ArrayList in ein byte- Array Allgemeine Java-Themen 7
L ArrayList in Array .bin am verzweifeln Allgemeine Java-Themen 2
LucasGlockner Effizienter byte-Zugriff auf ein long[]-Array Allgemeine Java-Themen 8
8u3631984 Frage Performance bei Linked List und Array List Allgemeine Java-Themen 5
M Queue mit einem Array implemetieren Allgemeine Java-Themen 16
M Array Rang eines Elements Allgemeine Java-Themen 4
TheSepp Java bestimmtes Array auf den Wert 0 setzen Allgemeine Java-Themen 32
TheSepp Wie kann man Leerzeichen aus einer Array liste entfernen? Allgemeine Java-Themen 10
B HeapSort für Array of Strings funktioniert nur teilweise Allgemeine Java-Themen 3
noah1407 Array Allgemeine Java-Themen 3
D Methoden Teil-Array mit Maximalwert bestimmen Allgemeine Java-Themen 23
N einem Array Objekte hinzufügen die ihr Array position gespeichert haben Allgemeine Java-Themen 34
N zweidimensionalen Array in dreidimensionalen Array speichern Allgemeine Java-Themen 4
N Schnellste Methode, ein Array durchzugehen? Allgemeine Java-Themen 9
T Objekt Array Aufgabe mit Busdatenbank Allgemeine Java-Themen 2
L Array und Index Allgemeine Java-Themen 26
L die 3 größten Zahlen im Array Allgemeine Java-Themen 1
S Übergabe eines Sortierkriteriums für ein Artikel Array mittels BiPredicate<Artikel, Artikel> Allgemeine Java-Themen 13
Willi.We Array sortieren Allgemeine Java-Themen 5
gotzi242 Array Summe bestimmen tipps? Allgemeine Java-Themen 14
H Matrix ohne Array erstellen Allgemeine Java-Themen 9
Aboya Char Array rekursiv vergleichen Allgemeine Java-Themen 15
V4ll3.Wff Array in Java Allgemeine Java-Themen 4
Noahscript Aus einem byte Array Steuerungszeichen und Code bekommen und ersetzen Allgemeine Java-Themen 3
H Array Sportschütze Allgemeine Java-Themen 6
Sumo_ow "ArrayIndexOutofBoundsException: 2" Array Problem Allgemeine Java-Themen 6
xGh0st2014 Problem mit Java Array Allgemeine Java-Themen 1
M Array verändern Allgemeine Java-Themen 1
A JavaFX 2 dimensionales array Allgemeine Java-Themen 1
LimDul Direktes return eines Array geht nicht Allgemeine Java-Themen 20
M Java 2D Array für ein Grid erstellen ? Allgemeine Java-Themen 2
H Array mit dem Datentype String[] initializieren Allgemeine Java-Themen 7
E Datentypen Wie kann ich die Längen der unterschiedlichen Ebenen aus einem Objekt lesen von dem ich weiß, dass es ein mehrdimensionaler Array ist? Allgemeine Java-Themen 3
N Byte Array in Java "dekomprimieren" Allgemeine Java-Themen 3
parrot Array Aufgabe Allgemeine Java-Themen 3
N String Array Eingabe Allgemeine Java-Themen 6
R Warum wird mir in der Konsole das "Standard Array" ausgegeben? Allgemeine Java-Themen 2
N Variablen Array Länge ändern. Allgemeine Java-Themen 8
D Kgv aller Paare aus einem Array mit n integer berechnen Allgemeine Java-Themen 5
W Enumeration ein Array/List als Eigenschaft mitgeben - warum geht das nicht? Allgemeine Java-Themen 0
kodela Problem mit strukturiertem Array Allgemeine Java-Themen 18
A Array Problem Allgemeine Java-Themen 8
Drachenbauer Wie stelle ich fest, ob ein Objekt in meinem Array vorkommt? Allgemeine Java-Themen 5
F Datei in String-Array einlesen Allgemeine Java-Themen 8
L Objekt aus Objekt-array "löschen" Allgemeine Java-Themen 2
I Array Parameter mit 2 Klassen - NullPointerException Allgemeine Java-Themen 3
X Größten Werte in meinem Array löschen? Allgemeine Java-Themen 16
E Angabe wie groß Array sein soll und in for-schleifen diesen Array füllen Allgemeine Java-Themen 3
F 3 Dimensionales Array mit Allgemeine Java-Themen 9
M Steueralgorithmus verwandelt Array in Anfangszustand Allgemeine Java-Themen 9
D Datentypen 2-3 Baum erstellen mit geordnetem int-array Allgemeine Java-Themen 0
T Objekt in Array packen Allgemeine Java-Themen 6
M Zahlen in Array anordnen Allgemeine Java-Themen 8
M Eclipse Unvollständigen Array ansteuern Allgemeine Java-Themen 2
D Erste Schritte Im Array Werte tauschen Allgemeine Java-Themen 5
Xge For/Array Error: IndexOutOfBounds Allgemeine Java-Themen 4
M Wie kann ich ein int[] Array in einer Methode benutzen? Allgemeine Java-Themen 6
FRI3ND Datentypen Date-Array sortieren - Text mitnehmen? Allgemeine Java-Themen 7
D Integer-Array variabler Größe mit Zahlen befüllen (Schleifen) Allgemeine Java-Themen 0
J Variablen Array ertellen bei model.put Allgemeine Java-Themen 13
S Eindimensionales Array in zweidimensionales Array speichern Allgemeine Java-Themen 5
R convert 2d array list to 2d array Allgemeine Java-Themen 1
J json Array würfel Spalten durcheinander Allgemeine Java-Themen 9
MiMa Array umbau oder Alternative? Allgemeine Java-Themen 5
L Datentypen 3D Array Allgemeine Java-Themen 3
M 2D Array mit unterschiedlichen Längen erstellen und befüllen Allgemeine Java-Themen 11
Mario1409 Methoden JSON Array von URL Allgemeine Java-Themen 8
E Swing Array mit Bildern in GUI darstellen Allgemeine Java-Themen 2
P Array einer abstrakten Klasse Allgemeine Java-Themen 4
H Zweidimensionales Array - Zellen der Tabelle verbinden Allgemeine Java-Themen 2
M Zweidimensionales Array mit Binärzahlen füllen Allgemeine Java-Themen 8
M Array aus Thread Objekten erstellen Allgemeine Java-Themen 2
kodela Dynamisches Array in einer Klasse Allgemeine Java-Themen 5
G Array ohne Aufzählungszeichen ausgeben Allgemeine Java-Themen 6
J Wie kann ich ein Java Array als Säulendiagramm ausgeben? Allgemeine Java-Themen 2
Z 2D Array Pixels reparieren Allgemeine Java-Themen 2
S Algorithmus welcher True-Werte in einem Array findet und auswertet. Allgemeine Java-Themen 5
B Polibios Array erweitern Allgemeine Java-Themen 1
R Index in einem Array löschen Allgemeine Java-Themen 10
R Index in einem Array löschen Allgemeine Java-Themen 2
U Methoden Algorithmus MergeSort String [ ] array sortieren programmieren Allgemeine Java-Themen 17
J Array-List Bubble-Sort Allgemeine Java-Themen 12
4 Variablen Int-Array Int Zuweisen Allgemeine Java-Themen 7
J Array Allgemeine Java-Themen 8
Z Array mit unterschiedlichen Werten Allgemeine Java-Themen 1
L sortiertes Array im main aufrufen klappt nicht. Allgemeine Java-Themen 3
O Mein JButton Array funktioniert nicht Allgemeine Java-Themen 3
A Mit dem letzten bis zum ersten Wert aus Array rechnen Allgemeine Java-Themen 15
A Vector Strings in Array splitten Allgemeine Java-Themen 6
I Muster in Array suchen Allgemeine Java-Themen 10
RalleYTN Datentypen Herausfinden ob Object ein Array ist ohne den Typen des Arrays zu kennen? Allgemeine Java-Themen 12
S Variablen String[] Array per schleife in int[] einlesen Allgemeine Java-Themen 8

Ähnliche Java Themen

Neue Themen


Oben