Junior
Jakie typy kolekcji obsługuje Kotlin?
sobes.tech AI
Odpowiedź od AI
Kotlin obsługuje standardowe typy kolekcji z Java Collection Framework, a także oferuje własne wygodne rozszerzenia i interfejsy.
Główne interfejsy kolekcji w Kotlin:
Collection<out E>: Podstawowy interfejs dla niezmiennych kolekcji.MutableCollection<E>: Interfejs dla kolekcji zmiennych.List<out E>: Interfejs dla niezmiennych kolekcji z dostępem uporządkowanym po indeksie.MutableList<E>: Interfejs dla zmiennych kolekcji z dostępem uporządkowanym po indeksie.Set<out E>: Interfejs dla niezmiennych zbiorów unikalnych elementów bez określonego porządku.MutableSet<E>: Interfejs dla zmiennych zbiorów unikalnych elementów bez określonego porządku.Map<K, out V>: Interfejs dla niezmiennych kolekcji par "klucz-wartość".MutableMap<K, V>: Interfejs dla zmiennych kolekcji par "klucz-wartość".
Główne implementacje kolekcji w bibliotece standardowej Kotlin (często używane funkcje-konstruktor):
ArrayList: Zmienna lista oparta na tablicy.LinkedList: Zmienna lista oparta na liście powiązanej.HashSet: Zmienny zbiór oparty na tablicy haszującej.LinkedHashSet: Zmienny zbiór oparty na tablicy haszującej i liście powiązanej (zachowuje kolejność dodawania).HashMap: Zmienna mapa oparta na tablicy haszującej.LinkedHashMap: Zmienna mapa oparta na tablicy haszującej i liście powiązanej (zachowuje kolejność dodawania).
Przykłady tworzenia kolekcji:
// Nie zmienialna lista
val immutableList = listOf("a", "b", "c")
// Zmienialna lista
val mutableList = mutableListOf(1, 2, 3)
// Nie zmienialne zbior
val immutableSet = setOf("apple", "banana")
// Zmienialne zbior
val mutableSet = mutableSetOf(10, 20, 30)
// Nie zmienialna mapa
val immutableMap = mapOf("key1" to "value1", "key2" to "value2")
// Zmienialna mapa
val mutableMap = mutableMapOf("a" to 1, "b" to 2)
Główna różnica między wersjami zmiennymi (Mutable*) i niezmiennymi (*) polega na tym, że kolekcje zmienne oferują metody do dodawania, usuwania i modyfikowania elementów, podczas gdy kolekcje niezmienne tego nie robią. Funkcje konstrukcyjne listOf, setOf, mapOf tworzą kolekcje niezmienne, a mutableListOf, mutableSetOf, mutableMapOf tworzą kolekcje zmienne.
Zalety korzystania z kolekcji w Kotlin:
- Bezpieczeństwo: Nie zmienialne kolekcje domyślnie pomagają unikać niezamierzonych zmian.
- Rozszerzenia: Kotlin oferuje wiele przydatnych funkcji rozszerzeń do pracy z kolekcjami (
filter,map,forEachitd.). - Interoperacyjność: Łatwo pracować z istniejącym kodem Java korzystającym z kolekcji z Java Collection Framework.