Was ist der unterschied zwichen ArrayList und List?

2 Antworten

Ich nehme an es geht um Java:

List ist ein Interface, und ArrayList eine Implementierung davon. Heißt, ArrayList kann alles, was eine List können muss (und vielleicht noch mehr - da fällt mir bei ArrayList aber nichts ein). Das kann LinkedList aber auch.

Der Unterschied zwischen ArrayList und LinkedList ist, dass ArrayList intern Arrays verwendet, um die Elemente abzulegen. Deshalb ist wahlfreier Zugriff (sowas wie arrayList.get(123) ) schnell. Bei LinkedList ist das (ab einer gewissen Größe der Liste) langsam (weil die Elemente verkettet sind und der Reihe nach durchlaufen werden müssen, um an Element 123 zu kommen). Dafür ist LinkedList schnell, wenn inmitten der Liste ein Element eingefügt oder ausgeschnitten werden soll - ArrayList muss dafür das komplette Array umkopieren (langsamer). Für sehr kleine Listen (10 Elemente oder so) macht das alles aber kaum einen Unterschied.

FooBar1  29.09.2015, 17:45

Du nimmst falsch an. Schau mal auf die Tags

0
Omnivore01  29.09.2015, 17:46

@ArchEnema Ich weiß, dass die Bezeichner in Java unterschiedlich sind, jedoch geht es in der Frage um .NET (siehe Verschlagwortung)

0
Omnivore01  29.09.2015, 20:09
@ArchEnema

Nicht so schlimm, ich bin ja auch nur auf "programmieren" angesprungen ^^

0

ArrayList ist nicht typisiert. Da kannst du allemöglichen Objekte reinschieben.

List hingegen ist typisiert durch <Typ>. Dann kannst du nur Objekte da reinknallen, die von der Klasse sind oder von der Klasse/Interface erben.

List<object> wäre also das gleiche wie ArrayList

ArchEnema  29.09.2015, 20:04

Naja, List<object> ist nicht wirklich das gleiche wie ArrayList. Sind schon andere Implementierungen - und ArrayList ist deprecated.

Ich verlinke mal zur Konkurrenz: http://stackoverflow.com/questions/365482/net-arraylist-vs-list

0
Omnivore01  29.09.2015, 20:08
@ArchEnema

Achso? okay....ich benutze ArrayList eh nicht, da bei mir immer alles typisiert wird. Object-Listen kommen gaaaanz selten vor

0
ArchEnema  29.09.2015, 20:18
@Omnivore01

Macht ja auch Sinn. List<Object> kann mal nötig sein - dann wäre vmtl. ArrayList gleichwertig (wobei ich nicht weiß, wie weit die beiden Implementierungen unter der Haube voneinander abweichen). Dennoch hätte man auch dann keinen Vorteil davon, die ältere Syntax/API zu verwenden. Sieht natürlich anders aus, wenn man mit bestehendem Code arbeitet, der noch ArrayList verwendet.

1