0

Collections e Map em Java

Yolanda Ornellas
Yolanda Ornellas

Fala, Galera!

Revendo as aulas de Collections e Streams em Java, decidi fazer um resumo sobre Collections e Map para publicar aqui.


Sugestões, comentários, bate-papos são bem-vindos!

____________________________________________________

Java Collections

java.util.Collections


Uma coleção de interfaces e classes que servem para representar grupos de dados como uma única unidade: uma coleção (unir vários dados em uma estrutura só).


  • List
  • Queue
  • Set


List

java.util.list


ArrayList é o uso mais comum.


- garante ordem de inserção

- permite adição, atualização, leitura e remoção de itens

- permite a ordenação por Comparators


Para instanciar:

	List<T> nomeDaLista = new ArrayList<>();

*T é o tipo primitivo da lista (pode ser String, Integer, Boolean, etc. Pode ser até um Object!)


Métodos:

nomeDaLista.add(elemento)

adiciona um elemento ao final da lista

nomeDaLista.set(índice, elementoNovo)

atualiza o elemento do índice informado

nomeDaLista.remove(índice)

remove o elemento do índice informado

nomeDaLista.remove(elemento)

remove o elemento informado

nomeDaLista.get(índice)

retorna o elemento do índice informado

nomeDaLista.size()

retorna um int com o tamanho da lista

nomeDaLista.contains(element) 

retorna um boolean. Se contém o elemento informado, retorna true, se não contém, retorna false

nomeDaLista.isEmpty() 

retorna boolean. True se a lista estiver vazia, false se não estiver

nomeDaLista.clear() 

limpa a lista

nomeDaLista.indexOf(element) 

retorna um int com o índice do elemento informado (se o elemento não estiver na lista, retornará um número negativo)


Métodos herdados de Collection:

.sort()

ordena os itens da lista

.shuffle()

modifica a ordenação da lista de maneira aleatória

.swap(lista, elemento1, elemento2)

troca o elemento1 de lugar com o elemento 2 na lista especificada

etc...


Percorrendo a List:

For Each:

for(T elemento : nomeDaLista) {
  ...instruções a serem feitas ao percorrer a lista...
}

Executa as instruções descritas para cada elemento do tipo T da lista especificada

Iterator:

Iterator<T> nomeDoIterator = nomeDaLista.iterator();

Primeiro instancia-se um Iterator do tipo (T) da lista a ser percorrida.

Será possível percorrer o iterator enquanto ele tiver um próximo elemento a ser percorrido:

while(nomeDoIterator.hasNext()) {
 ...instruções a serem feitas ao percorrer a lista...
}

Queue

java.util.LinkedList - implementa a interface Queue


É uma fila, uma lista de prioridades, o primeiro elemento que entra é o primeiro elemento a sair (FIFO – first in, first out).


- garante ordem de inserção

- não permite mudança de ordenação

- permite adição, leitura e remoção de itens (não permite atualização)


Para instanciar:

Queue<T> nomeDaFila = new LinkedList<>();

*T é o tipo primitivo da fila (pode ser String, Integer, Boolean, etc. Pode ser até um Object)


Métodos:

Possui os mesmos métodos da List, exceto o .set(índice, elemento novo), pois não é possível alterar elementos da fila.


Métodos específicos:

nomeDaFila.poll()

retorna e remove o 1º elemento da fila. retorna null se estiver vazia

nomeDaFila.remove()

igual ao poll, porém lança uma exceção se a fila estiver vazia

nomeDaFila.peek()

retorna (sem remover) o o 1º elemento da fila. retorna null se estiver vazia

nomeDaFila.element()

igual ao peek, porém lança uma exceção se a fila estiver vazia

nomeDaFila.offer(elemento)

adiciona o elemento na fila. Retorna um boolean true se adicionou o elemento. False se não adicionou


Também pode ser percorrido com o ForEach e o Iterator.


Set

java.util.Set


HashSet - é o mais usado

LinkedHashSet

TreeSet


É um conjunto de coleções. Bom pra trabalhar com coleções grandes.


- por padrão, não permite ordenação

- não permite itens repetidos

- permite adição, leitura e remoção de itens (não permite atualização)

- não possui busca por item


Para instanciar:

Set<T> nomeDoSet = new HashSet<>();
                 = new LinkedHashSet<>();
                 = new TreeSet<>();

*T é o tipo primitivo do Set (pode ser String, Integer, Boolean, etc. Pode ser até um Object)


Métodos:

Possui os mesmos métodos da List, herdados de Collection.


Também podem ser percorrido com o ForEach e o Iterator.


HashSet

  • não é ordenado
  • é o mais performático
  • não permite valores repetidos

LinkedHashSet

  • mantém a ordem de inserção dos elementos
  • é mais lento

TreeSet

  • mantém a ordem de inserção
  • pode ser ordenado por Comparators
  • mais performático para leitura

Métodos específicos do TreeSet:

nomeDoSet.first()

retorna o elemento que está no topo

nomeDoSet.last()

retorna o último elemento

nomeDoSet.lower(elemento)

retorna o elemento abaixo do elemento informado

nomeDoSet.higher(elemento)

retorna o elemento acima do informado

nomeDoSet.pollFirst()

retorna e remove o elemento do topo

nomeDoSet.pollLast()

retorna e remove o último elemento

____________________________________________________

Map

java.util.HashMap

java.util.TreeMap

java.util.LinkedHashMap


HashMap - o mais utilizado

TreeMap – mantém uma ordem própria de ordenação (não necessariamente é a de inserção)

LinkedHashMap – garante a ordem de inserção


Não é derivado de Collections, mas possui métodos semelhantes


- armazena 2 tipos de elementos: uma chave e um valor. O valor é atribuído a essa chave (a chave é o índice do valor)

*a chave pode ser um objeto, o valor pode ser uma lista, isso faz o map ser uma interface extremamente interessante de se trabalhar

- permite valores repetidos, porém não permite chaves repetidas

-não garante ordem de inserção, porém pode ser ordenado

- permite adição, busca por chave ou valor, atualização, remoção e navegacão


Para instanciar:

Map<K, V> nomeDoMap = new HashMap<>();
                    = new LinkedHashMap<>();
                    = new TreeMap<>();

*K é o tipo da chave e V o tipo do valor/elemento


Métodos:

nomeDoMap.put(chave, valor)

adiciona ao map. Se a chave já existir no map, atualiza o valor

nomeDoMap.get(chave)

retorna o valor relacionado à chave informada

nomeDoMap.containsKey(chave)

retorna boolean se contém ou não a chave informada

nomeDoMap.containsValue(valor)

retorna boolean se contém ou não o valor informado

nomeDoMap.remove(chave)

remove a chave e o valor correspondente

nomeDoMap.size()

retorna um int com o tamanho do Map


Percorrendo o Map:

nomeDoMap.keySet()

retorna um Set com as chaves do Map. Pode ser usado no ForEach para percorrer o Map.

nomeDoMap.entrySet()

retorna um Set do objeto Entry<K, V>, que tem os métodos .getKey() e .getValue(). Pode ser usado no ForEach também


Métodos específicos do TreeMap:

nomeDaFila.firstKey()

retorna o elemento que está relacionado à primeira chave

nomeDaFila.lastKey()

retorna o último elemento que está relacionado à ultima chave

nomeDaFila.lowerKey(chave)

retorna o elemento abaixo da chave informada

nomeDaFila.higherKey(chave)

retorna o elemento acima da chave informada

nomeDaFila.pollFirstEntry()

retorna e remove o primeiro elemento

nomeDaFila.pollLastEntry()

retorna e remove o último elemento

____________________________________________________

As interfaces Collections e o Map possuem muito mais recursos do que os apresentados aqui. A documentação da Oracle é extremamente rica e útil para os momentos de estudo.


Bons estudos para nós! ; )

Yolanda Ornellas

0
0

Comentários (3)

0
Viviane Lara

Viviane Lara

09/07/2021 03:20

Muito legal sua postagem, obrigada!

0
Daniella Barbosa

Daniella Barbosa

08/07/2021 20:35

Ficou excelente, obrigada por compartilhar! Tô estudando exatamente o Collections agora e esses resumos sempre ajudam!

0
Adauri Campos

Adauri Campos

08/07/2021 19:48

Parabéns pela iniciativa, ficou muito bom.

Uma entusiasmada estudante de programação curtindo demais essa jornada!

Brasil