# Unterschied Array & ArrayList



## Vulymuz (3. Aug 2012)

Hallo,

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:


----------



## SlaterB (3. Aug 2012)

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


----------



## bone2 (3. Aug 2012)

Man kann keine ArrayList primitiver Datentypen erstellen


----------



## SlaterB (3. Aug 2012)

was sich ja nach demselben Prinzip korrigieren läßt, Integer statt int usw.


----------



## langhaar! (3. Aug 2012)

Ein Array hat mehrere Dimensionen.

So sähe ein Schachbrett als verkettete Array Listen deutlich schlecher aus.


----------



## Landei (3. Aug 2012)

Vulymuz hat gesagt.:


> Hallo,
> 
> 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.
> ...



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.


----------



## Vulymuz (3. Aug 2012)

SlaterB hat gesagt.:


> was sich ja nach demselben Prinzip korrigieren läßt, Integer statt int usw.



Eben ...



langhaar! hat gesagt.:


> Ein Array hat mehrere Dimensionen.
> 
> So sähe ein Schachbrett als verkettete Array Listen deutlich schlecher aus.



Was meinst du mit "mehrere Dimensionen"? Bitte nicht so theoretisch, sondern etwas klarer begründen.


----------



## SlaterB (3. Aug 2012)

Dimensionen ist ein Grundbegriff bei Arrays, das ist kaum theoretisch

int[3][7]
hat 21 Plätze, Zugriff [0][5] möglich,

vergleichbar eine ArrayList in der drei ArrayLists drin sind, wenn je 7 Elemente, dann insgesamt 21
get(0).get(5)


----------



## tribalup (3. Aug 2012)

Speichern Arrays nicht komplette Objekte während Arraylists nur Referenzen enthalten?


----------



## SlaterB (3. Aug 2012)

gewagte These, besonders wenn man einmal mehr erinnert, dass ArrayList intern ja genau ein Array verwendet


----------



## njans (3. Aug 2012)

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


----------



## SlaterB (3. Aug 2012)

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


----------



## vanny (4. Aug 2012)

Ein Array hat eine feste Anzahl an Feldern, und ist eben genau dann die richtige wahl, wenn man eine feste Anzahl von Feldern benötigt.

Damit sollte auch schon alles begründet sein.


----------



## Hüte (4. Aug 2012)

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


----------

