Considere o seguinte código em Java:Ao ser executado com as ...

Próximas questões
Com base no mesmo assunto
Q2447933 Programação
Considere o seguinte código em Java:

Imagem associada para resolução da questão


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

Comentários

Veja os comentários dos nossos alunos

Continuação:

**3. Imprimindo o Resultado:**

```java

System.out.println(texto);

```

* **`System.out.println(texto);`:** Imprime a string final `texto` no console.

**Observações:**

* O código utiliza streams Java 8 para processar e formatar as entradas do `Map`.

* A ordenação das entradas por código de estado garante que os estados sejam exibidos em ordem crescente.

* A formatação final utiliza o caractere ":" para separar os códigos de estado dos nomes das cidades.

**Resultado Final:**

Ao executar o código, o seguinte texto será impresso no console:

```

11: Amapá, 13: Itaubal, 15: Cutias

```

Este código demonstra como utilizar streams Java, ordenação e formatação de strings para processar e exibir dados de forma eficiente e organizada.

Fonte: Gemini

## Análise Detalhada do Código Java

**1. Criando um Map de Cidades:**

```java

Map<String, String> cidades = Map.of("11", "Amapá", "13", "Itaubal", "15", "Cutias");

```

* **`Map<String, String>`:** Declara a variável `cidades` como um objeto do tipo `Map` que mapeia chaves do tipo `String` para valores do tipo `String`.

* **`Map.of()`:** Cria um novo objeto `Map` imutável e o atribui à variável `cidades`.

* **Pares chave-valor:** O método `Map.of()` recebe pares de chave-valor separados por vírgulas. Neste caso, ele cria um mapeamento entre os códigos de estado (`11`, `13`, `15`) e seus respectivos nomes (`Amapá`, `Itaubal`, `Cutias`).

**2. Ordenando e Formatando as Entradas do Map:**

```java

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(": "));

```

* **`cidades.entrySet().stream()`:** Obtém um stream das entradas do `Map` `cidades`. Cada entrada é um par chave-valor representado por um objeto `Map.Entry`.

* **`.sorted(...)`:** Ordena as entradas do `Map` por ordem crescente da chave (código de estado).

  * `(e1, e2) -> e1.getKey().compareTo(e2.getKey())`: Função de comparação lambda que utiliza o método `compareTo()` para comparar as chaves das entradas `e1` e `e2`.

* **`.map(e -> Arrays.asList(e.getKey(), e.getValue()))`:** Transforma cada entrada `e` em uma lista contendo a chave e o valor da entrada.

  * `e.getKey()`: Obtém a chave da entrada `e`.

  * `e.getValue()`: Obtém o valor da entrada `e`.

  * `Arrays.asList()`: Cria uma lista imutável a partir dos elementos fornecidos.

* **`.map(e -> String.join(", ", e))`:** Transforma cada lista em uma string concatenando seus elementos com a vírgula e espaço como separadores.

  * `String.join(", ", e)`: Junta os elementos da lista `e` em uma string, separando-os com a vírgula e espaço.

* **`.collect(Collectors.joining(": "))`:** Combina as strings resultantes em uma única string, separando-as com dois pontos e um espaço.

  * `Collectors.joining(": "):` Colecionador que concatena as strings do stream, utilizando ": " como separador entre cada string.

Fonte: Gemini

Continua...

GABARITO LETRA C!

Vamos devagar: o Map.of cria um mapa IMUTÁVEL com as chaves e valores, então: "11" -> "Amapá" | "13" -> "Itaubal" | "15" -> "Cutias" --> isso NÃO MUDA!

Agora vamos ao código em si:

cidades.entrySet().stream() ---> vai transformar o Map em Stream de pares (chave e valor)

.sorted((e1,e2) -> e1.getKey().compareTo(e2.getKey())) ---> Ordena os pares com base na chave(String) em ordem crescente. Dai vc já conclui:11,13,15 (ordem crescente)

.map(e-> Arrays.asList(e.getKey(), e.getValue())) ---> cada entrada do mapa (cada par chave-valor). O método .getKey() pega a chave (por exemplo, "11"), e .getValue() pega o valor (por exemplo, "Amapá"). Gerando uma lista com dois elementos, exemplo: ["11", "Amapá"]

.map(e-> String.join(",",e)) --> Isso aq vai juntar os elementos por vírgula. Ficando "11, Amapá" --> Com essa daqui vc já mata a questão

.collect(Collectors.joining(": ")); --> esse daqui só vai separar cada string com :

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo