1
resposta

Números acima de 100.0 não entram no filtro de números pares

Vi essa dúvida em outro tópico e ela ainda não foi sanada. Fiz o teste com diversos números e nenhum acima de 100.0 entra no filtro de números pares utilizado na atividade: Leitura e filtros específicos de Map.

Temos o seguinte código:

val pedidosPares = pedidos.filterKeys { numero ->
        numero % 2 == 0
    }
    println(pedidosPares)

Nessa aula é usado em um dos valores 150.0 e ele não aparece na impressão do filtro.

1 resposta

Boa tarde, Bruno!

Realizei os testes aqui e tudo funcionou como o esperado. O que está sendo comparado nesta função não é o 'valor' do mapa, mas sim a sua chave. Então, o valor ser maior que 100.0 não fará diferença, o que este filtro está analisando é a chave do mapa.

Por exemplo:

 val mapaLegal: MutableMap<Int, Double> = mutableMapOf(
        1 to 90.0,
        2 to 70.0,
        3 to 4.0,
        4 to 50.0,
        6 to 150.0
    )

    // Filtrando as CHAVES Pares

    val chavesPares = mapaLegal.filterKeys { key -> key % 2 == 0 }
    println(chavesPares)   // print: {2=70.0, 4=50.0, 6=150.0}

    // as chaves 2, 4, 6 são números pares



    // Filtrando os VALORES Pares

    val valoresPares = mapaLegal.filterValues { value -> value % 2.0 == 0.0 }
    println(valoresPares) // print: {1=90.0, 2=70.0, 3=4.0, 4=50.0, 6=150.0}

    // todos os valores neste exemplo são pares (90.0, 70.0, 4.0, etc...)

Neste código tem um exemplo de como filtrar os valores pares do mapa. Note que os valores da função foram alterados (o 2 passou a ser 2.0 e o 0 passou a ser 0.0), isso ocorreu por conta do tipo do valor (Double).

Espero que essa explicação possa te ajudar,

Abraço