A classe HashSet faz parte do Java Collections Framework, fornecendo uma coleção rápida e não ordenada que não permite elementos duplicados. Ele é construído sobre o HashMap, o que significa que herda os mesmos benefícios de complexidade de tempo, mas se concentra puramente na exclusividade do elemento. Neste artigo, exploraremos como o HashSet funciona, o que o torna único e por que é diferente de outras coleções.
Um HashSet é:
// Parameterized constructor with initial capacity SetsetWithInitialCapacity = new HashSet(5); // Parameterized constructor using a collection Set setWithCollection = new HashSet(Arrays.asList(4, 4, 3)); // Default constructor with default capacity 16 Set set = new HashSet();
set.add(1); set.add(2); set.add(1); // Duplicate value is ignored System.out.println(set); // Output -> [1, 2]
Se você precisar substituir valores duplicados em vez de ignorá-los, HashSet não será a escolha certa. Isso ocorre porque ele prioriza a exclusividade do elemento.
// Parameterized constructor with initial capacity SetsetWithInitialCapacity = new HashSet(5); System.out.println(setWithInitialCapacity.size()); // Output -> 0
Mesmo que a capacidade de setWithInitialCapacity seja 5, o tamanho é 0 porque o tamanho reflete o número de elementos presentes no conjunto, não a capacidade inicial. Você pode pensar na capacidade como o espaço de armazenamento interno, que se ajusta conforme os elementos são adicionados.
// Parameterized constructor using a collection SetsetWithCollection = new HashSet(Arrays.asList(4, 4, 3)); System.out.println(setWithCollection); // Output -> [3, 4] or [4, 3]
Se você precisar reter elementos classificados, considere usar um TreeSet, que garante que os elementos sejam organizados em ordem crescente.
Em entrevistas, uma pergunta comum é se você pode recuperar um índice de um elemento em um HashSet. A resposta é Não, porque HashSet usa um mecanismo de hashing para armazenar elementos, não uma estrutura baseada em índice como uma lista ou um array.
Como HashSet é apoiado por um HashMap, ele usa as chaves do mapa para armazenar elementos, enquanto os valores são irrelevantes. É por isso que cada elemento em um HashSet deve ser único, assim como as chaves em um HashMap.
HashSet é uma ferramenta poderosa quando você precisa de uma coleção rápida e desordenada que evite duplicatas. Embora ofereça complexidade de tempo O(1) para a maioria das operações, faltam recursos como classificação e indexação. Para os desenvolvedores, saber como o HashSet se relaciona com o HashMap ajuda a entender seu funcionamento interno e a fazer melhor uso da estrutura de coleções.
Na próxima postagem, exploraremos uma pergunta comum frequentemente feita em entrevistas para testar o conhecimento dos candidatos sobre conceitos de coleções.
Fundamentos de Java
Fundamentos da entrevista de matriz
Fundamentos da memória Java
Boa codificação!
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3