Sobes.tech
Junior

Que tipos de coleções o Kotlin suporta?

sobes.tech IA

Resposta da IA

O Kotlin suporta os tipos padrão de coleções do Java Collection Framework, bem como as suas próprias extensões e interfaces convenientes.

Interfaces principais de coleções em Kotlin:

  • Collection<out E>: Interface base para uma coleção imutável.
  • MutableCollection<E>: Interface para uma coleção mutável.
  • List<out E>: Interface para uma coleção imutável com acesso ordenado por índice.
  • MutableList<E>: Interface para uma coleção mutável com acesso ordenado por índice.
  • Set<out E>: Interface para uma coleção imutável de elementos únicos sem ordem específica.
  • MutableSet<E>: Interface para uma coleção mutável de elementos únicos sem ordem específica.
  • Map<K, out V>: Interface para uma coleção imutável de pares "chave-valor".
  • MutableMap<K, V>: Interface para uma coleção mutável de pares "chave-valor".

Implementações principais de coleções na biblioteca padrão do Kotlin (frequentemente usadas com funções construtoras):

  • ArrayList: Lista mutável baseada em array.
  • LinkedList: Lista mutável baseada em uma lista ligada.
  • HashSet: Conjunto mutável baseado em uma tabela hash.
  • LinkedHashSet: Conjunto mutável baseado em uma tabela hash e uma lista ligada (mantém a ordem de inserção).
  • HashMap: Mapa mutável baseado em uma tabela hash.
  • LinkedHashMap: Mapa mutável baseado em uma tabela hash e uma lista ligada (mantém a ordem de inserção).

Exemplos de criação de coleções:

// Lista imutável
val immutableList = listOf("a", "b", "c")

// Lista mutável
val mutableList = mutableListOf(1, 2, 3)

// Conjunto imutável
val immutableSet = setOf("apple", "banana")

// Conjunto mutável
val mutableSet = mutableSetOf(10, 20, 30)

// Mapa imutável
val immutableMap = mapOf("key1" to "value1", "key2" to "value2")

// Mapa mutável
val mutableMap = mutableMapOf("a" to 1, "b" to 2)

A principal diferença entre as versões mutáveis (Mutable*) e imutáveis (*) reside no fato de que as coleções mutáveis oferecem métodos para adicionar, remover e modificar elementos, enquanto as coleções imutáveis não o fazem. As funções construtoras listOf, setOf, mapOf criam coleções imutáveis, e mutableListOf, mutableSetOf, mutableMapOf criam coleções mutáveis.

Vantagens de usar coleções no Kotlin:

  • Segurança: Coleções imutáveis por padrão ajudam a evitar alterações não intencionais.
  • Extensões: Kotlin fornece muitas funções de extensão úteis para trabalhar com coleções (filter, map, forEach, etc.).
  • Interoperabilidade: É fácil trabalhar com código Java existente que usa coleções do Java Collection Framework.