Collections
|

Java Collections


Este é o material teórico utilizado nas aulas de Java que eu ministrei aos meus colegas de trabalho. O material original está em slides de Power Point, por isso o conteúdo está basicamente todo em bullet points.

O objetivo do treinamento foi reforçar a compreensão dos fundamentos de Java por meio de aprendizado prático e aplicado.

Se você está começando em Java e Orientação a Objetos, dê uma olhada no post Orientação a Objetos, que é basicamente um “resumão” de tudo o que é importante na Programação Orientada a Objetos.

Você pode encontrar a parte prática (código e exercícios) no post Java & Object-Oriented Programming.

O que são Collections?

Em Java, Collection é um framework que fornece uma arquitetura para armazenar e manipular um determinado grupo de objetos. Uma Collection representa uma unidade de objetos, ou seja, um grupo.

Por meio das Collections, nós podemos realizar operações em dados, tais como busca, ordenação, inserção, manipulação e exclusão.

O framework fornece muitas interfaces (Set, List, Queue, Deque) e classes (ArrayList, Vector, LinkedList, PriorityQueue, HashSet, LinkedHashSet, TreeSet).

Hierarquia das Collections

image 9

ArrayList

ArrayList é a classe mais usada para lidar com listas – mas não significa que é sempre a melhor.

Principais ações:

  • adicionar, remover e acessar elementos na lista;
  • ordenar e percorrer a lista (existe uma inovação interessante no Java 8),
  • verificar se a lista está vazia ou contém determinado elemento (e obter seu index),
  • obter o tamanho da lista,
  • transformar a lista em Array.

Muito se fala sobre a diferença entre os diversos tipos de lista. Uma das comparações mais comuns é entre ArrayList e LinkedList. A diferença é basicamente a performance, e uma pode ser melhor do que a outra, dependendo do caso.

ArrayList

Vantagem: fazer buscas de maneira muito eficiente, como invocar o método get().

Desvantagem: inserir um novo elemento no início (pois todos os elementos que estão no começo da lista terão de se mover para a próxima posição).

LinkedList

Vantagem: bastante rápida para adicionar e remover elementos no início da lista.

Desvantagem: lento para acessar um determinado elemento, pois a implementação precisará percorrer todos os elementos.

Map Interface

A interface Map faz parte do framework de Collections, mas não herda a interface de Collection.

Um Map contém valores com base em uma chave, ou seja, par de chave (key) e valor (value).

Cada par de chave e valor é conhecido como uma entrada (entry).

Um Map contém chaves únicas (não podem se repetir).

Um Map será útil quando você precisar buscar, atualizar ou excluir elementos com base em uma chave.

Hierarquia dos Maps

image 10

Para implementar um Map, existem duas interfaces (Map e SortedMap) e três classes (HashMap, LinkedHashMap e TreeMap).

Um mapa não permite chaves duplicadas, mas podemos ter valores duplicados.

HashMap e LinkedHashMap permitem chaves e valores nulos, mas TreeMap não permite nenhuma chave ou valor nulo.

Para percorrer um Map, podemos convertê-lo em Set (métodos keySet() e entrySet()), ou usar o método forEach(), do Java 8.

HashMap

Principais ações:

  • verificar se o mapa tem determinada chave, valor, ou se está vazio,
  • percorrer o mapa,
  • buscar valores,
  • atribuir chave a valor,
  • remover elementos,
  • obter tamanho.

Generics

Os Generics em Java são tipos parametrizados. A ideia é permitir que tipos (Integer, String, Boolean,etc., e tipos criados pelo desenvolvedor) sejam um parâmetro para métodos, classes e interfaces.

Usando Generics, é possível criar classes que trabalham com diferentes tipos de dados – e eles são muito utilizados em Collections.

Utiliza-se <> para especificar tipos de parâmetros na criação de classes genéricas.

No parâmetro, não podemos usar tipos primitivos.

Para criar objetos de uma classe genérica, usamos a seguinte sintaxe:

TipoBase <Tipo> obj = new TipoBase<>()

Fontes


Leitura recomendada: Inovações do Java 8.


Similar Posts

One Comment

Leave a Reply

Your email address will not be published. Required fields are marked *