Sobes.tech
Junior

Milyen típusú gyűjteményeket támogat a Kotlin?

sobes.tech MI

Válasz az MI-től

A Kotlin támogatja a Java Collection Framework szabványos kollekciótípusait, valamint saját kényelmes kiterjesztéseit és interfészeit.

A Kotlin fő kollekciós interfészei:

  • Collection<out E>: Az alapértelmezett interfész az immutable kollekciókhoz.
  • MutableCollection<E>: Az módosítható kollekciók interfésze.
  • List<out E>: Az indexelt, immutable kollekciók interfésze.
  • MutableList<E>: Az indexelt, módosítható kollekciók interfésze.
  • Set<out E>: Az egyedi elemekből álló, nem sorrend szerinti, immutable kollekciók interfésze.
  • MutableSet<E>: Az egyedi elemekből álló, nem sorrend szerinti, módosítható kollekciók interfésze.
  • Map<K, out V>: A kulcs-érték párokat tartalmazó, immutable kollekciók interfésze.
  • MutableMap<K, V>: A kulcs-érték párokat tartalmazó, módosítható kollekciók interfésze.

A Kotlin standard könyvtárának fő kollekció-implementációi (gyakran használják konstruktorfüggvényekkel):

  • ArrayList: Egy tömbön alapuló módosítható lista.
  • LinkedList: Egy láncolt lista alapú módosítható lista.
  • HashSet: Egy hash-táblán alapuló módosítható halmaz.
  • LinkedHashSet: Egy hash-táblán és láncolt listán alapuló módosítható halmaz (megőrzi a beszúrás sorrendjét).
  • HashMap: Egy hash-táblán alapuló módosítható térkép.
  • LinkedHashMap: Egy hash-táblán és láncolt listán alapuló módosítható térkép (megőrzi a beszúrás sorrendjét).

Kollekciók létrehozásának példái:

// Nem módosítható lista
val immutableList = listOf("a", "b", "c")

// Módosítható lista
val mutableList = mutableListOf(1, 2, 3)

// Nem módosítható halmaz
val immutableSet = setOf("apple", "banana")

// Módosítható halmaz
val mutableSet = mutableSetOf(10, 20, 30)

// Nem módosítható térkép
val immutableMap = mapOf("key1" to "value1", "key2" to "value2")

// Módosítható térkép
val mutableMap = mutableMapOf("a" to 1, "b" to 2)

A fő különbség a módosítható (Mutable*) és az immutábilis (*) verziók között az, hogy a módosítható kollekciók tartalmaznak módszereket az elemek hozzáadására, törlésére és módosítására, míg az immutábilis kollekciók nem. A konstruktorfüggvények listOf, setOf, mapOf immutábilis kollekciókat hoznak létre, míg a mutableListOf, mutableSetOf, mutableMapOf módosíthatóakat.

A Kotlin kollekcióinak használatának előnyei:

  • Biztonság: Az immutábilis kollekciók alapértelmezés szerint segítenek elkerülni a nem szándékolt módosításokat.
  • Kiterjesztések: A Kotlin számos hasznos kiterjesztő függvényt kínál a kollekciókkal való munkához (filter, map, forEach, stb.).
  • Interoperabilitás: Könnyű meglévő Java-kóddal dolgozni, amely a Java Collection Framework kollekcióit használja.