Pular para o conteúdo principal

Questão de Algoritmos e Estrutura de Dados — Estrutura de Dados — CEPS-UFPA 2022

Algoritmos e Estrutura de DadosEstrutura de Dados
Código
gp036800
Banca
CEPS-UFPA
Órgão
UFPA
Ano
2022
Cargo
CEPS - - Técnico de Tecnologia da Informação
Considere o código Java a seguir. ArrayList lista = new ArrayList<Float>(); Set set = new HashSet<Integer>(); Stack pilha = new Stack<Integer>(); pilha.push(4); pilha.push(2); pilha.push(7); pilha.pop(); set.add(8); set.add(4); set.add(8); lista.add(1f); lista.add(3f); lista.add(7f); lista.remove(1); System.out.println(lista); System.out.println(set); System.out.println(pilha); A saída correta desse trecho de código é
  1. A[4, 2] [4, 8] [1.0, 7.0]
  2. B[1.0, 7.0] [4, 8] [4, 2]
  3. C[4, 2] [4, 8, 4] [3.0, 7.0]
  4. D[3.0, 7.0] [4, 8, 4] [4, 2]
  5. E[1.0, 7.0] [4, 8] [2, 7]
Revelar gabarito e comentário

GabaritoB — [1.0, 7.0] [4, 8] [4, 2]

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”.

Análise de código Java: ArrayList, HashSet, Stack

Gabarito: letra B. O código produz as seguintes saídas: a lista [1.0, 7.0], o conjunto [4, 8] e a pilha [4, 2]. A alternativa B é a única que reflete exatamente essa sequência.

Passo a passo da execução

  1. Pilha (Stack):

    • push(4) → [4]

    • push(2) → [4, 2]

    • push(7) → [4, 2, 7]

    • pop() → remove o topo (7), resulta em [4, 2]

  1. Conjunto (HashSet):

    • add(8) → {8}

    • add(4) → {8, 4}

    • add(8) → ignorado (já existe), permanece {8, 4}

  1. Lista (ArrayList):

    • add(1f) → [1.0]

    • add(3f) → [1.0, 3.0]

    • add(7f) → [1.0, 3.0, 7.0]

    • remove(1)remove o elemento no índice 1 (o 3.0), resultando em [1.0, 7.0]

NÃO CAIA NESSA!

O método remove(1) do ArrayList recebe um int e interpreta como índice, não como valor. Muitos candidatos confundem com remove(Object), que removeria o objeto 1.0. A banca explora exatamente essa sobrecarga de métodos. Lembre-se: remove(int index) atua sobre a posição; para remover por valor, use remove(Object).

Alternativa A — ❌ Incorreta

A primeira linha [4,2] corresponde à pilha, mas a ordem das saídas no enunciado é: primeiro lista, depois set, depois pilha. Portanto, a ordenação está errada. A lista deveria ser [1.0, 7.0].

Alternativa B — ✅ Correta ⟵ GABARITO

A sequência [1.0, 7.0], [4, 8], [4, 2] é exatamente a produzida pelo código.

Alternativa C — ❌ Incorreta

A segunda linha [4, 8, 4] é impossível em um HashSet, pois ele não permite elementos duplicados. O conjunto só pode conter [4, 8]. Além disso, a primeira linha [4,2] está trocada com a terceira.

Alternativa D — ❌ Incorreta

Assim como em C, a presença de [4, 8, 4] no conjunto é inválida (duplicata). A primeira linha [3.0, 7.0] também está errada.

Alternativa E — ❌ Incorreta

A terceira linha [2, 7] está incorreta. Após o pop(), a pilha contém [4, 2], não [2, 7].

Gabarito: letra B.

Link permanente: /questoes/gp036800