A hierarquia de collections em Java consiste em agrupar elementos/objetos, onde cada classe tem subclasses e métodos. Não aceita tipos primitivos, mas a classe "array" permite a inclusão de vários elementos homogêneos do mesmo tipo, aceitando tipos primitivos.
Os métodos do framework de collections estão presentes no pacote java.util dentro do JDK (Java Development Kit). As interfaces principais são List, Set e Map.
Generics
Utiliza o símbolo <> (diamante) para tipos genéricos. Os parâmetros de tipo mais comuns incluem E (Elemento), K (Chave), N (Número), T (Tipo), V (Valor).
Comparator x Comparable
São usados para ordenação de collections. Comparable fornece uma única sequência de ordenação, afetando a classe original, enquanto Comparator fornece múltiplas sequências sem modificar a classe original.
List x Set x Map
- List: Permite elementos duplicados, mantém a ordem de inserção. Exemplos de implementações são ArrayList e LinkedList.
- Set: Não permite elementos duplicados.
- HashSet usa tabela hash
- TreeSet usa árvore binária balanceada
- LinkedHashSet mantém a ordem de inserção
- Map: Mapeia chaves para valores.
- HashMap usa tabela hash
- TreeMap usa árvore binária balanceada
- LinkedHashMap mantém a ordem de inserção
Exemplos de implementações/Classes:
- ArrayList: Armazena elementos em um array redimensionável, permitindo acesso rápido por índices.
- LinkedList: Armazena elementos em uma lista duplamente vinculada, eficiente para adição/remoção no início/final.
- HashSet: Armazena elementos em uma tabela hash, sem ordem específica.
- TreeSet: Armazena elementos em uma árvore binária balanceada, mantendo ordem crescente.
- LinkedHashSet: Mantém ordem de inserção usando tabela hash e lista duplamente vinculada.
- HashMap: Mapeia chaves para valores usando tabela hash, sem ordem específica.
Observações:
O primeiro elemento adicionado em um conjunto (Set) é o primeiro a ser retornado.
No Map, o método put atualiza ou cria um par chave-valor.
A interface Map não requer a criação de uma classe antes de criar uma coleção, e a busca pode ser feita diretamente pela chave, dispensando a necessidade de loops for.
Exemplos de implementações antigas incluem Vector (sincronizado) e HashTable (sincronizado e sem permitir nulos).
Top comments (0)