Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

DESAFIO - Spring 3

  • 1 - Dada a lista de números inteiros abaixo, filtre apenas os números pares e imprima-os.
List<Integer> numeros = Arrays.asList(1, 2, 3, 4, 5, 6);
        numeros.stream().filter(n -> n %2 ==0)
                .collect(Collectors.toList()).forEach(System.out::println);
  • Dada a lista de strings abaixo, converta todas para letras maiúsculas e imprima-as.
List<String> palavras = Arrays.asList("java", "stream", "lambda");
        palavras.stream().map( p -> p.toUpperCase())
        .forEach(System.out::println);
  • Dada a lista de números inteiros abaixo, filtre os números ímpares, multiplique cada um por 2 e colete os resultados em uma nova lista.
List<Integer> numeros2 = Arrays.asList(1, 2, 3, 4, 5, 6);
        var numerosImpares = numeros2.stream().filter(n -> n %2 !=0).
                map(p -> p*2)
                .collect(Collectors.toList());
        System.out.println(numerosImpares);
  • Dada a lista de strings abaixo, remova as duplicatas (palavras que aparecem mais de uma vez) e imprima o resultado.
List<String> frutas = Arrays.asList("apple", "banana", "apple", "orange", "banana");
        var fruta = frutas.stream().distinct().collect(Collectors.toList());
        System.out.println(fruta);
  • Dada a lista de sublistas de números inteiros abaixo, extraia todos os números primos em uma única lista e os ordene em ordem crescente.
List<List<Integer>> listaDeNumeros = Arrays.asList(
                Arrays.asList(1, 2, 3, 4),
                Arrays.asList(5, 6, 7, 8),
                Arrays.asList(9, 10, 11, 12));
        var numerosPrimos = listaDeNumeros.stream()
                .flatMap(List::stream)
                .filter(Main::ehPrimo)
                .sorted()
                .collect(Collectors.toList());

        System.out.println(numerosPrimos);
        
         private static boolean ehPrimo(int numero) {
        if (numero < 2) return false;
        for (int i = 2; i <= Math.sqrt(numero); i++) {
            if (numero % i == 0) {
                return false;
            }
        }
        return true;
    }
  • Dado um objeto Pessoa com os campos nome e idade, filtre as pessoas com mais de 18 anos, extraia os nomes e imprima-os em ordem alfabética. A classe Pessoa está definida abaixo.
List<Pessoa> pessoas = Arrays.asList(
                new Pessoa("Alice", 22),
                new Pessoa("Bob", 17),
                new Pessoa("Charlie", 19)
        );
        pessoas.stream().
                filter(p -> p.getIdade() >18)
                .map(p -> p.getNome()).sorted()
                .forEach(System.out::println);
  • Você tem uma lista de objetos do tipo Produto, onde cada produto possui os atributos nome (String), preco (double) e categoria (String). Filtre todos os produtos da categoria "Eletrônicos" com preço menor que R$ 1000, ordene-os pelo preço em ordem crescente e colete o resultado em uma nova lista.
List<Produto> produtos = Arrays.asList(
                new Produto("Smartphone", 800.0, "Eletrônicos"),
                new Produto("Notebook", 1500.0, "Eletrônicos"),
                new Produto("Teclado", 200.0, "Eletrônicos"),
                new Produto("Cadeira", 300.0, "Móveis"),
                new Produto("Monitor", 900.0, "Eletrônicos"),
                new Produto("Mesa", 700.0, "Móveis")
        );
        System.out.println("PRODUTOS: ");
        var novaLista = produtos.stream().filter(p -> p.getCategoria().
                equals("Eletrônicos") && p.getPreco() <1000)
                .sorted((p,p2) -> Double.compare(p.getPreco(),p2.getPreco()))
                .collect(Collectors.toList());
       for (var lista : novaLista){
           System.out.println(lista);
       }
  • Tomando o mesmo código do exercício anterior como base, modifique o código para que a saída mostre apenas os três produtos mais baratos da categoria "Eletrônicos".
        List<Produto> produtosMaisBaratos = produtos.stream()
                .filter(p -> p.getCategoria().equals("Eletrônicos"))
                .filter(p -> p.getPreco() < 1000)
                .sorted((p1, p2) -> Double.compare(p1.getPreco(), p2.getPreco()))
                .limit(3)
                .collect(Collectors.toList());
        System.out.println("Produtos + Baratos");
       for (var produtosBaratos : produtosMaisBaratos){
           System.out.println(produtosBaratos);
       }
1 resposta
solução!

E aí, Paulo! Tudo bem?

Parabéns! Mantenha o ritmo nos exercícios e continue compartilhando na nossa comunidade.

Percebi que você dominou o uso de Streams em Java. Também aplicou muito bem o filter, map e sorted para transformar coleções de forma funcional. E por fim, demonstrou saber a relevância de manipular dados usando programação funcional para tornar o código mais conciso e eficiente.

Permaneça postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

Ícone de sugestão Para saber mais:

Sugestão de conteúdo para você mergulhar ainda mais sobre o tema:

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!