Array vs. ArrayList vs. HashMap

Diskutiere Array vs. ArrayList vs. HashMap im Allgemeine Java-Themen Bereich.
W

White_Fox

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.
 
L

L0oNY

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.
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.
 
T

Tobias-nrw

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

White_Fox

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. :)
 
M

mrBrown

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

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

mrBrown

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.
 
D

Der Wissende

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.blogspot.com/2014/10/infinite-scrolling-with-javafx-tableview.html?m=1

Vielleicht hilft dir das etwas weiter
 
T

Tobias-nrw

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

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 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.
 
T

Tobias-nrw

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

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.)
 
W

White_Fox

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:
T

Tobias-nrw

So viel dar fich verraten, der Name des Erfinders begann/beginnt nicht mit O. :D
 
Thema: 

Array vs. ArrayList vs. HashMap

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben