0

Aplicando Conceitos de Coleções, Arrays e Listas

#Kotlin
Igor Sousa
Igor Sousa

Desde já AVISO : Não sou um expert no assunto.

Estou publicando esse artigo com o intuito de ajudar pessoas leigas, que possuem interesse ou que estão estudando o assunto e que tem alguma dificuldade em entender os conceitos.


Se Ao ler este artigo surgir alguma duvida, ou notar que algo aqui abordado está incoerente me contacte através de:<https://www.linkedin.com/in/igor-damasceno-4422aa1ba/>


Collections = coleções que são estruturas de dados. Essas coleções em Kotlin são divididas em:

A Biblioteca padrão Kotlin fornece implementações para tipos de coleção básicos diversos. Sendo assim a divisão entre essas implementações é feita por:

Uma interface somente de leitura que fornece operações para acessar os elementos da coleção.

Uma interface mutável que estende a interface somente leitura com operações de gravação: adição, remoção e atualização de seus elementos.

- Mutável: um dado mutável é um dado que pode ser mudado após ser inicializado/criado, como uma VAR, AS COLLECTIONS MUTABLES PODEM TER OS ITENS/DADOS/VALORES DA LISTA ALTERADOS, REMOVIDOS OU ADICIONADOS.

- Imutável: é um dado que não muda. Uma variável imutável após a inicialização não tem seus itens/dados/valores nem sua lista modificada, por isso é considerada apenas para leitura. Como uma VAL. NÃO PODE ALTERAR, REMOVER OU ADICIONAR ITENS A LISTA.

- COMO COLEÇÕES EM KOTLIN TEMOS:

- Array = Mutável e tem tamanho fixo, a lista após ser criada pode ter os itens/valores alterados, não pode adicionar mais itens a lista ou remover os itens existentes na mesma.

- ArrayList = Mutável, sem tamanho fixo, pode se adicionar ou remover novos itens. Permite alterar, remover ou adicionar itens existentes na lista.

- List = Imutável, de tamanho fixo e serve apenas para leitura. Após a inicialização a lista não mudara, seus dados/itens não podem ser alterados e não se pode adicionar ou remover itens da lista.

- SetOf = É Imutável de tamanho fixo e serve apenas para leitura. Após a inicialização a lista não mudara, seus dados/itens não podem ser alterados e não se pode adicionar ou remover itens da lista.

- MapOf = Imutável, de tamanho fixo e serve apenas para leitura. Após a inicialização a lista não mudara, seus dados/itens não podem ser alterados e não se pode adicionar ou remover itens da lista.

 

Arrays; É utilizado para criação de listas, listas de dados. Uma lista de nomes, idades, bebidas, tarefas etc. É uma “varável” que armazena vários dados. Uma lista que armazena diversos dados que possuem índices. Um array nomes de 3 posições possui essa estrutura:

Os índices possuem a contagem iniciada de 0. Ou seja, um array de [3] posições possui os índices [0, 1, 2], cada índice corresponde diretamente a um dado que está armazenado nessa lista.

Para criar o array nome faça:

           val nomes = arrayOf("joão","cleito","creito")

          println(nomes[0])//joão

          println(nomes[1])//cleito

          println(nomes[2])//creito

Em kotlins existe tipos primitivos para arrays especificas, onde os dados que serão armazenados na lista possuem um mesmo tipo, sendo considerada uma lista de tipo homogenio, todos inteiros ou Doubles ou etc... como:

val values = IntArray(3)//array de tipo Interio com tamanho fixo 3

   values[0] = 1

   values[1] = 7

   values[2] = 6

existem IntArray(), DoubleArray(), FloatArray(), ShortArray(), e muitos outros... ao utilizar arrays de tipos primitivos você ganha performance.

O arrayOf é uma array que não possui um tipo específico. Então podemos ter diversos dados de indeterminados tipos na lista sendo considerada uma lista de tipo heterogenio, o tamanho da arrayOf não precisa ser especificado e nem os valores precisam ser atribuídos manualmente aos índices da array. TUDO ISSO JÁ É FEITO AUTOMATICAMENTE

val array1 = arrayOf("joão",1 , 2.6)//declara joao no índice 1, etc.. automaticamente

   println(array1[0])// joão tipo String

   println(array1[1])// 1 tipo Int

   println(array1[2])// 2.6 tipo Double

Para ter as vantagens de não ter que indicar o tamanho do array e atribuir os dados a cada índice manualmente, também se tem o:

val values = intArrayOf(1,7,6)//que também teria

println(array1[0])// 1

          println(array1[1])// 7

          println(array1[2])// 6

existem intArrayOf(), doubleArrayOf (), floatArrayOf (), shortArrayOf (), e muitos outros...

ESSA AUTOMATIZAÇÃO FORNECIDA PELO “Of” É UMA MANEIRA DE FLEXIBILIZAR A CRIAÇÃO E AUTERAÇÃO DE UM ARRAY ANTES DE SUA INICIALIZAÇÃO

Array<Tipo> é uma classe com implementação conhecida: é uma região de memória sequencial de tamanho fixo que armazena os itens em uma matriz alocada dinamicamente. Ou seja, Array<Tipo> é mutável/(pode ser alterado através de qualquer referência a ele). Array: TEM TAMANHO FIXO, MAS SEUS DADOS SÃO MUTAVEIS.


List; É uma coleção/lista assim como o array, mas ela é:

Imutável(não muda), de tamanho fixo assim como os arrays e serve apenas para leitura. Não é possível alterar, nem adicionar algum item na lista após a inicialização da mesma.

var lista = listOf("SP", "RJ", "MG")//lista de estados com 3 posições

   println(lista)//imprime toda a lista, sem ter que indicar os indices

   //lista.add("BA") list's são imutaveis de tamanho fixo

   //após a inicialização uma list só serve para leitura!!

 

ArrayList; É uma coleção/lista assim como o array, mas possui vantagens, você consegue fazer determinadas coisas que os Arrays comuns não permitem.

NÃO É A MESMA COISA QUE ARRAY!!!!!!

Por tras ele trabalha com a estrutura de arrays, mas possui diferenças!! Exemplo:

O ArrayList, ao contrário do Array não possui tamanho fixo é mutável, ou seja, pode adicionar, remover ou alterar os dados/itens:

   var estados = arrayListOf("SP", "BA", "MG")

          println("ArrayList Inicial")

          println(estados)

 

   estados.add("RJ")//adicona item a arraylist

          println("ArrayList Alterada: Item Adicionado")

          println(estados)

 

   estados.remove("SP")//remove o item pelo dado

          //estados.removeAt(0) remove pelo index

          println("ArrayList Alterada: Item Removido")

          println(estados)

 

   estados[1] = "WTF"

          println("ArrayList Alterada: Dados de um item Alterados")

          println(estados)

           

MapOf; É uma implementação chave/valor.

Todos os itens precisam ter chave e valor, o que seria valor(dados)/index em ArrayList é valor/chave em map.

No arraylist o índice/chave é definido automaticamente, já no map você deve identificar a chave e o valor.

Imutável, possui tamanho fixo. Os dados são exibidos da forma que foram adicionados.

var map = mapOf(

       //chave/indice "urso.. cao..." valor/dado "Animal.. Melhor amigo..."

       "urso" to "Animal que hiberna",

       "cao" to "Melhor amigo do Homen"

       )

   //NÃO É POSSIVEL ADICIONAR OU REMOVER ITENS!!!

   //map.put("passuru","Aquele que voa")

   //map.remove("urso")

   println(map["urso"])//exibe apenas os dados de urso

   println(map.isEmpty())//ta vazio?

   println(map.size)//tamanho do mapa

   println("-------------")

   //for (it in map.values){ exibe apenas os dados/valores

   for (it in map.keys){//exibe apenas os indices/chaves

       println(it)

   }

 

HashMapOf; Mutável, é uma coleção de dados que também possuem chave e Valor. A diferença entre HashMapOg e MapOf é que:

O HASHMAPOF É MUTÁVEL E O MAPOF É IMUTÁVEL.

 

SetOf; Imutáveis, são coleções que não permite elementos duplicados, são mais rápidos que o ArrayList, os itens são exibidos na ordem que foram adicionados. Exemplo:

val listaValores = setOf("1", "2", "3", "3", "4") //não permite itens duplicados na lista.

   println(listaValores)

   //NÃO É POSSIVEL ADICIONAR, ALTERAR OU REMOVER ITENS!!!

   //listaValores.add("5")

   //listaValores.remove("1")

   println(listaValores.isEmpty())//ta vazio?

   println(listaValores.size)//tamanho do mapa

VOCÊ PODE UTILIZAR O SET EM MOMENTOS QUE VOCE QUER UMA LISTA SEMELHANTE A UM ARRAYLIST E VOCÊ NÃO SE PREOCUPA COM A ORDEM E NEM QUER ITENS DUPLICADOS.


 

Mutable; MutableList, MutableSetOf e MutableMapOf são formas de dar a uma coleção genérica o suporte de poder alterar, adicionar e remover valores/dados. Já que os mesmos não são mutáveis.


- MutableListOf: Mutável, sem tamanho fixo, pode se adicionar ou remover novos itens. É a mesma coisa que list só que com dados mutáveis..

Mutável(muda), de tamanho não fixo. É possível alterar, adicionar, remover e alterar algum item na lista.

var listaFilmes = mutableListOf(

       "Rei leão",

       "A volta dos que não foram",

       "As aventuras de Pi")

   println("Lista Inicial:")

   println(listaFilmes)

 

   listaFilmes.add("O Choro da Chorona")//pode adicionar novos itens

   println("Lista Com item Adicionado:")

   println(listaFilmes)

 

   //listaFilmes.remove("As aventuras de Pi") remove item pelo dado

   listaFilmes.removeAt(2)//remov item pelo index

   println("Lista Com item Removido:")

   println(listaFilmes)

 

   listaFilmes[0] = "Rei LãoPão"

   println("Lista com dado mudado:")

   println(listaFilmes)

 

- MutableSetOf: Mutável, sem tamanho fixo, pode se adicionar ou remover novos itens. É a mesma coisa que list só que com dados mutáveis..

 val listaValores = mutableSetOf(

       "1", "2", "3", "3", "4")

   println(listaValores)

 

   //adiconando e removendo itens da lista

   listaValores.add("8")

   listaValores.remove(0)

 

   println(listaValores)

}

 

- MutabelMapOf : Mutável, sem tamanho fixo, pode se adicionar ou remover novos itens. É a mesma coisa que list só que com dados mutáveis..

val user1 = mutableMapOf(

       "name" to "Igor",

       "contry" to "BR",

       "state" to "SP"

   )

   println(user1)

   user1.put("state", "Menas-Gerais")//vai sobreescrever o state da lista

   println(user1)

   //adiciona mais um conjunto de chave e item/ chave e valor

   var professor = "teacher" to "yes"

   user1 += professor

   //remove um conjunto pela chave/indice

   user1.remove("state")

   for (keys in user1.keys){//exibe apenas os indices/chaves

       println(keys)

   }

}

 

Filters; Função que faz filtros em kotlin, é utilizado para filtrar dados da lista.

- Filtre as lasanhas da lista de Receitas ou algo do tipo. Para utilizar o filter faça:

Lista.filter { it.nome == “Lasanha” }.any( )//existe algum objeto da lista com nome igual a Lasanha? True or false

0
5

Comentários (0)

Amante de Tecnologia & Desenvolvimento Android Nativo

Brasil