ANC - Analista em Computação - Ênfase em Programação de Sistemas na Tecnologia Java
Analise o seguinte trecho de código Java:import java.util.Set;import java.util.HashSet;public class Conjunto {public static void main(String[] args) {Set <Integer> conjunto = new HashSet<Integer>();conjunto.add(2);conjunto.add(5);conjunto.add(1);conjunto.add(2);System.out.println(conjunto.toString());}}O que será escrito na saída padrão após a execução?
A[2, 5, 1, 2]
B[2, 5, 1]
C[1, 2, 2, 5]
D[1, 2, 5]
EMensagem de erro de compilação.
Revelar gabarito e comentário▾
GabaritoD — [1, 2, 5]
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
HashSet e eliminação de duplicatas em Java
Gabarito: letra D. O código compila e executa sem erros. A classe HashSet (implementação de Set) não permite elementos duplicados – ao adicionar o valor 2 duas vezes, apenas a primeira inserção é mantida. O conjunto resultante contém os elementos únicos {2, 5, 1}. Quando toString() é chamado, a ordem de exibição segue a disposição interna da tabela hash, que para inteiros pequenos normalmente produz a sequência crescente [1, 2, 5].
1add(2) → insere 2
2add(5) → insere 5
3add(1) → insere 1
4add(2) → duplicata ignorada
5toString() → [1, 2, 5]
LEVEL · soulevel.com.br
Análise das alternativas
Alternativa A — ❌ Incorreta
Apresenta o valor 2 repetido. Um HashSet nunca armazena duplicatas, portanto a saída jamais conteria [2, 5, 1, 2].
Alternativa B — ❌ Incorreta
Embora mostre os três elementos únicos, a ordem [2, 5, 1] não é a esperada para a implementação padrão do HashSet com os valores 1, 2 e 5 (os buckets são visitados em ordem crescente dos índices: 1, 2, 5). A banca considera o comportamento típico da JVM, que resulta em [1, 2, 5].
Alternativa C — ❌ Incorreta
Novamente exibe duplicata (o número 2 aparece duas vezes), violando a propriedade de conjunto sem elementos repetidos.
Alternativa D — ✅ Correta ⟵ GABARITO
A saída [1, 2, 5] reflete corretamente os elementos únicos armazenados e a ordem de iteração natural da tabela hash para esses valores inteiros.
Alternativa E — ❌ Incorreta
Não há erro de compilação. O código está sintaticamente correto: importa as classes necessárias, declara a classe, o método main e utiliza HashSet e System.out.println de forma válida.
PEGA ESSA DICA!
Em provas de Java, lembre-se de que Set elimina duplicatas e que HashSet não garante ordem de inserção – a ordem de iteração depende da implementação interna. Para inteiros pequenos, a ordem costuma ser crescente, mas isso não é contratualmente garantido. Em questões de múltipla escolha, o examinador normalmente adota o comportamento observado na prática.