Questão nº 79

Questão de Tecnologia da Informação · FGV TJ-AP 2024 (nº 79)

FGV2024Analista Judiciário - TI - Desenvolvimento de SistemasTecnologia da Informação
Gabarito: Cver comentário ↓

Considere o seguinte código em Java:

```
Map<String, String> cidades =
Map.of("11","Amapá","13","Itaubal","15","Cutias");
String texto =
cidades.entrySet().stream().sorted(
(e1, e2) -> e1.getKey().compareTo(e2.getKey()))
.map(e-> Arrays.asList(e.getKey(), e.getValue()))
.map(e-> String.join(", ", e))
.collect(Collectors.joining(": "));
System.out.println(texto);
```

Ao ser executado com as importações necessárias, o código Java acima imprime na saída padrão:

Resposta comentada

Gabarito Alternativa C

Streams em Java permitem processar sequências de dados de forma declarativa, aplicando operações como filtragem, transformação e agregação (coleta) de maneira eficiente e legível. As operações são encadeadas e executadas passo a passo sobre os elementos do fluxo.

Passo a passo da execução:

  1. Map.of("11","Amapá","13","Itaubal","15","Cutias"): Cria um mapa com as entradas.
  2. cidades.entrySet().stream(): Cria um fluxo de Map.Entry (pares chave-valor).
  3. .sorted((e1, e2) -> e1.getKey().compareTo(e2.getKey())): Ordena os pares pelo código (chave) em ordem crescente ("11", "13", "15"). O fluxo fica: ("11", "Amapá"), ("13", "Itaubal"), ("15", "Cutias").
  4. .map(e-> Arrays.asList(e.getKey(), e.getValue())): Transforma cada par em uma lista de duas strings. O fluxo fica: ["11", "Amapá"], ["13", "Itaubal"], ["15", "Cutias"].
  5. .map(e-> String.join(", ", e)): Transforma cada lista em uma única string, unindo os elementos com ", ". O fluxo fica: "11, Amapá", "13, Itaubal", "15, Cutias".
  6. .collect(Collectors.joining(": ")): Coleta as strings resultantes, unindo-as com ": ".

O resultado final é "11, Amapá: 13, Itaubal: 15, Cutias".

(A) Incorreta: A ordem está errada e o formato de união dos elementos também.
(B) Incorreta: A ordem está errada e o formato de união dos elementos também.
(C) Correta: O código ordena as entradas pela chave, transforma cada par (chave, valor) em uma string "chave, valor" e depois une essas strings com ": ".
(D) Incorreta: Esta alternativa inverte os delimitadores. Ela sugere que a união interna (chave e valor) usa ": " e a união externa (entre os pares) usa ", ", o que é o oposto do que o código faz (String.join(", ", e) para o par e Collectors.joining(": ") para os pares). Armadilha da banca: Confunde a função dos dois delimitadores (", " e ": ") usados em diferentes etapas do processamento.
(E) Incorreta: A ordem está errada (seria decrescente) e o formato de união dos elementos também.

Fonte: FGV TJ-AP 2024 Analista Judiciário - TI - Desenvolvimento de Sistemas (Caderno Tipo 1). Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho