Sobes.tech
Junior

Aké typy kolekcií podporuje Kotlin?

sobes.tech AI

Odpoveď od AI

Kotlin podporuje štandardné typy kolekcií z Java Collection Framework a tiež poskytuje svoje pohodlné rozšírenia a rozhrania.

Hlavné rozhrania kolekcií v Kotlin:

  • Collection<out E>: Základné rozhranie pre nemenné kolekcie.
  • MutableCollection<E>: Rozhranie pre meniteľné kolekcie.
  • List<out E>: Rozhranie pre nemenné kolekcie s usporiadaným prístupom podľa indexu.
  • MutableList<E>: Rozhranie pre meniteľné kolekcie s usporiadaným prístupom podľa indexu.
  • Set<out E>: Rozhranie pre nemenné kolekcie unikátnych prvkov bez určeného poradia.
  • MutableSet<E>: Rozhranie pre meniteľné kolekcie unikátnych prvkov bez určeného poradia.
  • Map<K, out V>: Rozhranie pre nemenné kolekcie dvojíc "kľúč-hodnota".
  • MutableMap<K, V>: Rozhranie pre meniteľné kolekcie dvojíc "kľúč-hodnota".

Hlavné implementácie kolekcií v štandardnej knižnici Kotlin (často používané konštrukčné funkcie):

  • ArrayList: Meniteľný zoznam založený na poli.
  • LinkedList: Meniteľný zoznam založený na prepojenom zozname.
  • HashSet: Meniteľná množina založená na hash tabuľke.
  • LinkedHashSet: Meniteľná množina založená na hash tabuľke a prepojenom zozname (uchováva poradie pridania).
  • HashMap: Meniteľná mapa založená na hash tabuľke.
  • LinkedHashMap: Meniteľná mapa založená na hash tabuľke a prepojenom zozname (uchováva poradie pridania).

Príklady vytvárania kolekcií:

// Nemenný zoznam
val immutableList = listOf("a", "b", "c")

// Meniteľný zoznam
val mutableList = mutableListOf(1, 2, 3)

// Nemenná množina
val immutableSet = setOf("apple", "banana")

// Meniteľná množina
val mutableSet = mutableSetOf(10, 20, 30)

// Nemenná mapa
val immutableMap = mapOf("key1" to "value1", "key2" to "value2")

// Meniteľná mapa
val mutableMap = mutableMapOf("a" to 1, "b" to 2)

Kľúčový rozdiel medzi meniteľnými (Mutable*) a nemennými (*) verziami je v tom, že meniteľné kolekcie poskytujú metódy na pridávanie, odstraňovanie a zmenu prvkov, zatiaľ čo nemenné kolekcie to nedokážu. Funkcie-stavitelia listOf, setOf, mapOf vytvárajú nemenné kolekcie, zatiaľ čo mutableListOf, mutableSetOf, mutableMapOf sú meniteľné.

Výhody používania kolekcií v Kotlin:

  • Bezpečnosť: Nemenné kolekcie pomáhajú vyhnúť sa nepredvídaným zmenám.
  • Rozšírenia: Kotlin poskytuje množstvo užitočných rozširujúcich funkcií na prácu s kolekciami (filter, map, forEach a pod.).
  • Interoperabilita: Jednoduchá práca s existujúcim Java kódom používajúcim kolekcie z Java Collection Framework.