Kotlin: List vs Array — der Kampf der Datentypen, den man kennen muss

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Kotlin: List vs Array — wo liegt der Haken?

\n\n

Wenn Sie mindestens eine Woche lang in Kotlin programmieren, sind Sie sicherlich schon auf die Frage gestoßen: „Warum kann ich nicht einfach überall Array verwenden? Wozu brauche ich diese List und MutableList?“

\n\n

Diese Frage ist eine der beliebtesten auf Stack Overflow. Und das zu Recht. Auf den ersten Blick speichern sowohl die Liste als auch das Array Elemente, man kann über den Index darauf zugreifen und sie durchlaufen. Aber wenn man tiefer gräbt, entdeckt man grundlegende Unterschiede, die sich auf die Leistung, die Codesicherheit und sogar darauf auswirken, wie Sie beim Entwerfen der Architektur denken.

\n\n

In diesem Tutorial werden wir den Unterschied zwischen List und Array in Kotlin im Detail erklären. Sie erfahren, wann Sie ein Array und wann eine Liste verwenden sollten und warum erfahrene Entwickler fast immer List wählen.

\n\n

1. Grundlagen: Was ist ein Array in Kotlin?

\n\n

Array in Kotlin ist eine direkte Projektion eines Java-Arrays. Es ist eine feste Sequenz von Elementen desselben Typs. Wenn Sie ein Array erstellen, reservieren Sie sofort Speicher dafür. Die Größe eines Arrays kann nach der Erstellung nicht geändert werden.

\n\n
// Array erstellen\nval numbers: Array<Int> = arrayOf(1, 2, 3, 4, 5)\nprintln(numbers[0]) // 1\nnumbers[2] = 10     // Wert kann geändert werden\nprintln(numbers[2]) // 10
\n\n

Arrays in Kotlin sind von Natur aus mutable (veränderbar): Sie können jederzeit ein Element über den Index ersetzen. Sie können jedoch kein neues Element hinzufügen oder ein vorhandenes löschen. Die Größe ist für immer festgelegt.

\n\n

Eigenschaften von Array:

\n
    \n
  • Feste Größe — es kann kein Element hinzugefügt oder gelöscht werden.
  • \n
  • Veränderbarer Inhalt — Elemente können überschrieben werden.
  • \n
  • Leistung — maximal, da es sich um direkten Speicherzugriff handelt.
  • \n
  • Primitive Arrays — es gibt spezielle Typen: IntArray, ByteArray, FloatArray usw. Sie arbeiten ohne Boxing, was einen Geschwindigkeitsvorteil bringt.
  • \n
\n\n
// Primitives Array — ohne Boxing\nval intArray: IntArray = intArrayOf(1, 2, 3, 4, 5)
\n\n

2. Grundlagen: Was ist eine List in Kotlin?

\n\n

List ist ein Interface aus der Standardbibliothek von Kotlin. Im Gegensatz zu einem Array ist eine Liste eine Abstraktion. Sie wissen nicht, wie sie die Daten intern speichert (es könnte ein ArrayList, LinkedList oder etwas anderes sein).

\n\n
// Erstellen einer unveränderlichen Liste\nval fruits: List<String> = listOf("apple", "banana", "cherry")\nprintln(fruits[0]) // apple\n// fruits[0] = "orange" // Compiler-Fehler!
\n\n

Das Hauptmerkmal von Kotlin ist die Unterteilung in read-only (List) und mutable (MutableList).

\n\n

List (read-only):

\n
    \n
  • Der Inhalt kann nicht geändert werden (weder hinzufügen, noch löschen, noch ersetzen).
  • \n
  • Nur lesen möglich.
  • \n
  • Sicherer für die Datenübergabe zwischen Komponenten.
  • \n
\n\n

MutableList:

\n
    \n
  • Elemente können hinzugefügt, gelöscht und ersetzt werden.
  • \n
  • Dynamische Größe.
  • \n
  • In der Praxis wird meistens ArrayList unter der Haube verwendet.
  • \n
\n\n
val mutableFruits: MutableList<String> = mutableListOf("apple", "banana")\nmutableFruits.add("orange")     // OK\nmutableFruits.remove("banana")  // OK\nmutableFruits[0] = "pear"       // OK
\n\n

3. Hauptunterschiede zwischen List und Array

\n\n

Fassen wir alles in einer übersichtlichen Tabelle zusammen (im Code als Kommentare).

\n\n
// 1. Veränderbarkeit\nval array = arrayOf(1, 2, 3)\narray[0] = 99 // ✅ Funktioniert\n\nval list = listOf(1, 2, 3)\n// list[0] = 99 // ❌ Compiler-Fehler\n\nval mutableList = mutableListOf(1, 2, 3)\nmutableList[0] = 99 // ✅ Funktioniert\n\n// 2. Größe\nval fixedArray = arrayOf(1, 2, 3)\n// fixedArray.add(4) // ❌ Diese Methode gibt es nicht\n\nva                

Blogs

Buchempfehlungen