Pular para o conteúdo principal

Questão de Programação — Java — FUNDATEC 2023

ProgramaçãoJava
Código
qq896827
Banca
FUNDATEC
Órgão
PROCERGS
Ano
2023
Nível
Superior
Cargo
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?
  1. A[2, 5, 1, 2]
  2. B[2, 5, 1]
  3. C[1, 2, 2, 5]
  4. D[1, 2, 5]
  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].

  1. 1add(2) → insere 2
  2. 2add(5) → insere 5
  3. 3add(1) → insere 1
  4. 4add(2) → duplicata ignorada
  5. 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.

Gabarito: letra D

Link permanente: /questoes/qq896827