- Uma coleção (collection) é uma estrutura de dados que serve para agrupar muitos elementos em uma única unidade, estes elementos precisão ser Objetos.
- Uma Collection pode ter coleções homogêneas e heterogêneas, normalmente utilizamos coleções homogêneas de um tipo especifico.
- O núcleo principal das coleções é formado pelas interfaces da figura a abaixo, essas interfaces permitem manipular a coleção independente do nível de detalhe que elas representam.
- Temos quatro grandes tipos de coleções:
List
(lista),Set
(conjunto),Queue
(fila) eMap
(mapa), a partir dessas interfaces, temos muitas subclasses concretas que implementam varias formas diferentes de se trabalhar com cada coleção.
Collection Framework in Java – Hierarchy, Need & Advantages
- Comparable fornece uma única sequência de ordenação. Em outras palavras, podemos ordenar a coleção com base em um único elemento, como id, nome e preço.
- Comparable afeta a classe original, ou seja, a classe atual é modificada.
- Comparable fornece o método
compareTo()
para ordenar elementos. - Comparable está presente no
pacote java.lang
. - Podemos ordenar os elementos da lista do tipo Comparable usando o método
Collections.sort(List)
.
- O Comparator fornece o método
compare()
para ordenar elementos. - O Comparator fornece múltiplas sequências de ordenação. Em outras palavras, podemos ordenar a coleção com base em múltiplos elementos, como id, nome, preço, etc.
- O Comparator não afeta a classe original, ou seja, a classe atual não é modificada.
- Um Comparator está presente no pacote
java.util
. - Podemos ordenar os elementos da lista do tipo Comparator usando o método
Collections.sort(List, Comparator)
.
- A classe
Collections
é uma classe utilitária do Java para operações comuns em coleções. - Ela fornece métodos para ordenação, busca, manipulação e sincronização de coleções.
- O método
sort()
é usado para ordenar uma lista em ordem ascendente. - O método
sort()
em conjunto comCollections.reverseOrder()
permite ordenar em ordem descendente.
- Um tipo genérico é uma classe genérica ou uma interface que é parametrizada em relação a tipos.
- O símbolo <> é chamado de "diamond" ou "diamond operator" foi um recurso introduzido no Java 7 e é usado no contexto de tipos genéricos em Java para inferir automaticamente o tipo com base no contexto.
- Para atualizar uma classe Box para usar generics, você cria uma declaração de tipo genérico alterando o código public class Box para public class Box.
- Isso introduz a variável de tipo, T, que pode ser usada em qualquer lugar dentro da classe.
- Uma variável de tipo pode ser qualquer tipo não primitivo que você especificar: qualquer tipo de classe, qualquer tipo de interface, qualquer tipo de array ou até mesmo outra variável de tipo.
- Os nomes de parâmetros de tipo mais comumente usados são:
- E - Elemento (usado extensivamente pelo Java Collections Framework)
- K - Chave
- N - Número
- T - Tipo
- V - Valor
- S, U, V, etc. - 2º, 3º, 4º tipos
- Vantagens simples de usar generics nas interfaces Collection em Java:
- Segurança do tipo de dados: O uso de generics garante que apenas objetos de um tipo específico possam ser adicionados à coleção, evitando erros de tipo e garantindo que você esteja lidando com os dados corretos.
- Código mais legível: Ao usar generics, você pode especificar o tipo de dados esperado ou retornado pela coleção, o que torna o código mais fácil de entender e ler.
- Detecta erros mais cedo: O compilador verifica se você está usando os tipos corretos durante a compilação, ajudando a identificar erros de tipo antes mesmo de executar o programa.
- Reutilização de código: Com generics, você pode criar classes e métodos genéricos que funcionam com diferentes tipos de coleções, evitando a necessidade de duplicar código para cada tipo específico.
- Melhor desempenho: O uso de generics pode melhorar o desempenho, pois evita a necessidade de conversões de tipo desnecessárias e permite que o compilador otimize o código com base no tipo especificado.