Kotlin oferece uma rica API para trabalhar com coleções, como listas, conjuntos e mapas. As coleções podem ser mutáveis ou imutáveis, permitindo flexibilidade ao manipular dados conforme a necessidade.
Uma List
é uma coleção ordenada de elementos que pode ou não ser mutável. Kotlin oferece tanto listas imutáveis (
List
) quanto listas mutáveis (MutableList
).
Uma lista imutável não permite modificações após a sua criação:
val languages: List<String> = listOf("Kotlin", "Java", "Python")
println(languages[0]) // Acessa o primeiro elemento
println(languages.size) // Tamanho da lista
Uma lista mutável permite adicionar ou remover elementos:
val mutableLanguages: MutableList<String> = mutableListOf("Kotlin", "Java")
mutableLanguages.add("Python") // Adiciona um novo elemento
mutableLanguages.remove("Java") // Remove o elemento "Java"
println(mutableLanguages)
Um Set
é uma coleção que não permite elementos duplicados. Assim como nas listas, os conjuntos podem ser mutáveis ou
imutáveis.
val uniqueNumbers: Set<Int> = setOf(1, 2, 3, 3) // "3" é ignorado por ser duplicado
println(uniqueNumbers)
val mutableSet: MutableSet<Int> = mutableSetOf(1, 2, 3)
mutableSet.add(4)
mutableSet.remove(2)
println(mutableSet)
Um Map
é uma coleção de pares chave-valor. As chaves em um Map
devem ser únicas.
val userRoles: Map<String, String> = mapOf("admin" to "Administrator", "user" to "Regular User")
println(userRoles["admin"]) // Acessa o valor correspondente à chave "admin"
val mutableMap: MutableMap<String, String> = mutableMapOf("admin" to "Administrator")
mutableMap["user"] = "Regular User" // Adiciona um novo par chave-valor
mutableMap.remove("admin") // Remove o par com chave "admin"
println(mutableMap)
Kotlin oferece várias funções de extensão para realizar operações comuns em coleções, como filtragem, mapeamento e redução.
A função filter
permite criar uma nova coleção com base em um critério:
val numbers = listOf(1, 2, 3, 4, 5)
val evenNumbers = numbers.filter { it % 2 == 0 }
println(evenNumbers) // [2, 4]
A função map
permite transformar os elementos de uma coleção:
val numbers = listOf(1, 2, 3)
val squaredNumbers = numbers.map { it * it }
println(squaredNumbers) // [1, 4, 9]
A função reduce
combina todos os elementos da coleção em um único valor:
val numbers = listOf(1, 2, 3, 4, 5)
val sum = numbers.reduce { acc, number -> acc + number }
println(sum) // 15
A função groupBy
agrupa os elementos da coleção em um mapa, com base em um critério:
val words = listOf("one", "two", "three", "four", "five")
val groupedByLength = words.groupBy { it.length }
println(groupedByLength) // {3=[one, two], 4=[four, five], 5=[three]}
Essas funções retornam o primeiro e o último elemento de uma coleção, respectivamente:
val numbers = listOf(1, 2, 3)
println(numbers.first()) // 1
println(numbers.last()) // 3
A função find
retorna o primeiro elemento que corresponde ao critério:
val numbers = listOf(1, 2, 3, 4)
val firstEven = numbers.find { it % 2 == 0 }
println(firstEven) // 2
any
retornatrue
se pelo menos um elemento da coleção corresponde ao critério.all
retornatrue
se todos os elementos da coleção correspondem ao critério.
val numbers = listOf(1, 2, 3, 4)
println(numbers.any { it > 3 }) // true
println(numbers.all { it < 5 }) // true
A função count
retorna o número de elementos que correspondem ao critério:
val numbers = listOf(1, 2, 3, 4)
println(numbers.count { it % 2 == 0 }) // 2
É importante lembrar que Kotlin incentiva o uso de coleções imutáveis (
List
,Set
,Map
) sempre que possível, pois isso ajuda a garantir a segurança do código e evita efeitos colaterais. Utilize coleções mutáveis (MutableList
,MutableSet
,MutableMap
) apenas quando for necessário modificar o conteúdo da coleção.
Ir para loops.