der Unterschied zwischen Array & ArrayLists ist mir nach gründlicher Recherche etwas klarer geworden.
Eine ArrayList ist bspw. dynamisch und man kann mit ihrer Funktionalität adden(.add), löschen(.remove) etc.
Doch stellt sich mir nun die Frage: Wieso sollte ich noch Arrays benutzen, wenn ArrayLists mehr Power haben? An dieser Stelle zweifle ich nun daran, ob ich den Unterschied zwischen Arrays und ArrayLists wirklich verstanden habe ... :rtfm:
eine Datenbank kann auch mehr als eine Textdatei, soll man nun das Dateisystem über den Haufen werfen?
ein BigDecimal ist mehr als ein double
großes überwiegt kleines, benötigt dafür aber in der Regel mehr Platz und zeitlichen Aufwand für jede Aktion
(wobei eine DB auch z.B. hinsichlich Suchen unheimlich schneller sein kann, vor allem die elementaren Aktionen sind langsamer durch Overhead)
bei ArrayList noch kleineres Problem als bei den anderen beiden,
Programme/ierer ohne Arrays sind sicher auf dieser Welt vorhanden, falls nicht fremde APIs diese Übergabe erzwingen
der Unterschied zwischen Array & ArrayLists ist mir nach gründlicher Recherche etwas klarer geworden.
Eine ArrayList ist bspw. dynamisch und man kann mit ihrer Funktionalität adden(.add), löschen(.remove) etc.
Doch stellt sich mir nun die Frage: Wieso sollte ich noch Arrays benutzen, wenn ArrayLists mehr Power haben? An dieser Stelle zweifle ich nun daran, ob ich den Unterschied zwischen Arrays und ArrayLists wirklich verstanden habe ... :rtfm:
Warum heißt ArrayList wohl ArrayList? Weil sie intern zum Speichern ein ganz normales Array verwendet (so wie eine LinkedList verlinkte Knoten). Wie willst bequemere und mächtigere Datenstrukturen vernünftig implementieren, wenn sie nicht auf primitiven, vom System direkt unterstützten (und deshalb recht schnellen) Datenstrukturen aufbauen können?
Also "brauchen" zumindest die Autoren von Bibliotheken Arrays, und du selbst auch, wenn du ähnlichen Code schreibst (sagen wir, für Matrizenrechnung). Natürlich solltest du in "normalen" Situationen eher ArrayList verwenden.
Bei der Verwendung von ArrayLists hast du eben einen Wrapper, der ein Array umschließt und dynamisch wächst. Wenn du aber genau weißt, wie viel Objekte du brauchst (Schachbrettfelder, Vektoren eines Raumes, etc.) dann möchtest du vielleicht auch gar nicht, dass die Anzahl dynamisch ist.
Besonders dann ist die statische Größe zu beachten, wenn manche Einträge auch null sein können (Belegung des Schachbretts mit Figuren, leere Felder mit null belegen).
und ein weiterer Kommentar:
aber es ist nun nicht so, dass eine ArrayList kein null enthalten kann, bisschen Arbeit zum Befüllen anfangs, dann gehts,
set-Methode gibts auch
ArrayList könnte für die Verwendung der gleichen Aufgabe langsamer sein als ein Array
Der Zugriff auf Array-Elemente ist so ziemlich der schnellste Zugriff auf Elemente, den es gibt
Wenn keine wachsende Datenstruktur benötigt wird, ist ein Array genau die richtige Wahl. Immerhin müssen bei der Erstellung einer ArrayList auch immer zumindest zwei Objekte erstellt werden. Daraus resultiert ein minimaler Geschwindigkeitsverlust