Questão nº 79

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

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

Considere o seguinte código em Java:

```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

Java Streams permitem processar coleções de dados de forma declarativa e sequencial, aplicando uma série de operações para transformar e combinar os elementos.

  • (A) Incorreta: A ordem dos elementos está incorreta (não segue a ordenação crescente das chaves) e o formato final não corresponde à lógica de junção definida no código.
  • (B) Incorreta: A ordem dos elementos está incorreta e o formato final não corresponde à lógica de junção definida no código.
  • (C) Correta: O código executa as seguintes etapas:
    1. cidades.entrySet().stream(): Cria um stream de pares chave-valor (Map.Entry).
    2. .sorted((e1, e2) -> e1.getKey().compareTo(e2.getKey())): Ordena os pares pela chave em ordem crescente ("11", "13", "15"). Os pares ficam: ("11", "Amapá"), ("13", "Itaubal"), ("15", "Cutias").
    3. .map(e-> Arrays.asList(e.getKey(), e.getValue())): Transforma cada par em uma lista de duas strings. Ex: List.of("11", "Amapá").
    4. .map(e-> String.join(", ", e)): Transforma cada lista em uma única string, unindo os elementos com ", ". Ex: "11, Amapá", "13, Itaubal", "15, Cutias".
    5. .collect(Collectors.joining(": ")): Une todas as strings resultantes da etapa anterior em uma única string, usando ": " como delimitador entre elas. Assim, "11, Amapá" é unido a "13, Itaubal" por ": ", e o resultado é unido a "15, Cutias" por ": ", gerando "11, Amapá: 13, Itaubal: 15, Cutias".
  • (D) Incorreta: Esta alternativa sugere que a junção interna (chave e valor) seria com ": " e a junção externa (entre os pares) seria com ", ". O código faz o oposto: a junção interna é com ", " (String.join(", ", e)) e a junção externa é com ": " (Collectors.joining(": ")). Essa é a armadilha da banca, pois confunde a ordem e o tipo de delimitador usado nas duas operações de junção.
  • (E) Incorreta: A ordem dos elementos está invertida (decrescente das chaves) e o formato final não corresponde à lógica de junção definida no código.

Fonte: FGV TJ-AP 2024 Analista Judiciário - TI - Banco de Dados (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