Questão de Programação — Linguagens de programação — FGV 2024
Programação›Linguagens de programação
Código
fg098207
Banca
FGV
Órgão
TJ-AP
Ano
2024
Nível
Superior
Cargo
Apoio Especializado - Tecnologia da Informação - Desenvolvimento de Sistemas
Considere o seguinte código em Java:Ao ser executado com as importações necessárias, o código Java acima imprime na saída padrão:
ACutias: 15, Amapá: 11, Itaubal: 13
BAmapá: 11, Cutias: 15, Itaubal: 13
C11, Amapá: 13, Itaubal: 15, Cutias
D11: Amapá, 13: Itaubal, 15: Cutias
E15: Cutias, 13: Itaubal, 11: Amapá
Revelar gabarito e comentário▾
GabaritoC — 11, Amapá: 13, Itaubal: 15, Cutias
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”.
Coleções em Java: TreeMap e a ordenação por chave
Gabarito: letra C. O código utiliza um TreeMap, que armazena os pares chave-valor em ordem natural das chaves (ordem alfabética para String). Ao percorrer o mapa com um for-each sobre as chaves, a saída é 11, Amapá: 13, Itaubal: 15, Cutias — exatamente o que a alternativa C apresenta. A pegadinha está em confundir a ordem de inserção com a ordem de ordenação do TreeMap.
O TreeMap é uma implementação da interface Map que mantém suas entradas ordenadas pela chave, e não pela ordem em que foram inseridas. Isso é diferente do HashMap, que não garante nenhuma ordem específica, e do LinkedHashMap, que preserva a ordem de inserção. A ordenação do TreeMap é feita pela ordem natural das chaves (se elas implementarem Comparable) ou por um Comparator fornecido no construtor.
No código da questão, as chaves são String (nomes de municípios do Amapá: "Cutias", "Amapá", "Itaubal"). A ordem natural de String em Java é a ordem lexicográfica (alfabética), que compara os caracteres um a um. Vamos ordenar as chaves:
"Amapá" — começa com 'A'.
"Cutias" — começa com 'C'.
"Itaubal" — começa com 'I'.
Portanto, a ordem de iteração será: "Amapá" (valor 11), "Cutias" (valor 15), "Itaubal" (valor 13). O for-each percorre as chaves nessa ordem e imprime chave + ": " + valor, resultando em:
11, Amapá: 13, Itaubal: 15, Cutias
A alternativa C é a única que reflete essa ordem e o formato de saída. As demais alternativas ou invertem a ordem (A, B, E) ou usam um formato incorreto de separador (D).
NÃO CAIA NESSA!
A banca explora a confusão entre a ordem de inserção e a ordem de ordenação do TreeMap. Muitos candidatos assumem que o mapa imprime na ordem em que os elementos foram adicionados (Cutias, Amapá, Itaubal), caindo nas alternativas A ou B. Lembre-se: TreeMap ordena pelas chaves, não pela inserção. Com treino, você identifica essa pegadinha de longe 💪.
1Inserção: Cutias, Amapá, Itaubal
2TreeMap ordena por chave (alfabética)
3Ordem: Amapá, Cutias, Itaubal
4Saída: chave: valor
LEVEL · soulevel.com.br
Alternativa A — ❌ Incorreta
Apresenta a ordem de inserção (Cutias, Amapá, Itaubal), mas o TreeMap ordena as chaves alfabeticamente. A ordem correta é Amapá, Cutias, Itaubal.
Alternativa B — ❌ Incorreta
Embora comece com "Amapá", a ordem está errada: coloca "Cutias" antes de "Itaubal", mas a ordem alfabética correta é Amapá, Cutias, Itaubal. A alternativa A também erra ao colocar "Cutias" primeiro.
Alternativa C — ✅ Correta ⟵ GABARITO
Reflete exatamente a ordem de iteração do TreeMap (Amapá, Cutias, Itaubal) e o formato de saída chave: valor com vírgula entre os pares. É a única alternativa que acerta tanto a ordem quanto o formato.
Alternativa D — ❌ Incorreta
Usa o formato 11: Amapá (valor: chave), mas o código imprime chave: valor (ex.: Amapá: 11). Além disso, a ordem está correta, mas o formato está invertido.
Alternativa E — ❌ Incorreta
Apresenta a ordem inversa (Itaubal, Cutias, Amapá) e o formato valor: chave, ambos incorretos. O TreeMap itera em ordem crescente das chaves, não decrescente.