1
resposta

Desafio: hora da prática

import java.util.Arrays;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<Integer> numeros = Arrays.asList(1, 2, 3, 4, 5, 6);

        numeros.stream()
                .filter(n -> n % 2 == 0)
                .forEach(System.out::println);
    }
}

    import java.util.Arrays;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<String> palavras = Arrays.asList("java", "stream", "lambda");

        palavras.stream()
                .map(String::toUpperCase)
                .forEach(System.out::println);
    }
}

    
    import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        List<Integer> numeros = Arrays.asList(1, 2, 3, 4, 5, 6);

        List<Integer> resultado = numeros.stream()
                .filter(n -> n % 2 != 0)       // Filtra os ímpares
                .map(n -> n * 2)              // Multiplica cada um por 2
                .collect(Collectors.toList()); // Coleta em uma nova lista

        System.out.println(resultado);
    }
}

    import java.util.Arrays;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<String> palavras = Arrays.asList("apple", "banana", "apple", "orange", "banana");

        palavras.stream()
                .distinct() // Remove duplicatas
                .forEach(System.out::println); // Imprime
    }
}

    import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class Main {

    public static void main(String[] args) {
        List<List<Integer>> listaDeNumeros = Arrays.asList(
            Arrays.asList(1, 2, 3, 4),
            Arrays.asList(5, 6, 7, 8),
            Arrays.asList(9, 10, 11, 12)
        );

        List<Integer> primosOrdenados = listaDeNumeros.stream()
            .flatMap(List::stream)              // Une todas as sublistas
            .filter(Main::ehPrimo)              // Filtra apenas números primos
            .sorted()                           // Ordena em ordem crescente
            .collect(Collectors.toList());      // Coleta em uma nova lista

        System.out.println(primosOrdenados);
    }

    // Método auxiliar para verificar se um número é primo
    public static boolean ehPrimo(int numero) {
        if (numero <= 1) return false;
        for (int i = 2; i <= Math.sqrt(numero); i++) {
            if (numero % i == 0) return false;
        }
        return true;
    }
}

    import java.util.Arrays;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<Pessoa> pessoas = Arrays.asList(
            new Pessoa("Ana", 17),
            new Pessoa("Bruno", 22),
            new Pessoa("Carla", 19),
            new Pessoa("Daniel", 15),
            new Pessoa("Eduardo", 30)
        );

        pessoas.stream()
                .filter(p -> p.getIdade() > 18)     // Filtra maiores de 18
                .map(Pessoa::getNome)              // Extrai os nomes
                .sorted()                          // Ordena em ordem alfabética
                .forEach(System.out::println);     // Imprime
    }
}

    
    import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        List<Produto> produtos = Arrays.asList(
            new Produto("Smartphone", 950.0, "Eletrônicos"),
            new Produto("Notebook", 2500.0, "Eletrônicos"),
            new Produto("Fone de Ouvido", 199.0, "Eletrônicos"),
            new Produto("Cafeteira", 300.0, "Eletrodomésticos"),
            new Produto("Carregador", 89.0, "Eletrônicos"),
            new Produto("TV", 1200.0, "Eletrônicos")
        );

        List<Produto> eletrônicosBaratos = produtos.stream()
            .filter(p -> p.getCategoria().equalsIgnoreCase("Eletrônicos") && p.getPreco() < 1000)
            .sorted((p1, p2) -> Double.compare(p1.getPreco(), p2.getPreco()))
            .collect(Collectors.toList());

        // Imprime os produtos resultantes
        eletrônicosBaratos.forEach(System.out::println);
    }
}
1 resposta

Oi, Gabrielly! Como vai?

Seu domínio sobre o uso de stream(), filter(), map(), collect() e outros recursos funcionais do Java está muito bem desenvolvido! Me chamou atenção como você utilizou corretamente o flatMap() para unir listas e o distinct() para remover duplicatas, ótimos exemplos de manipulação de coleções.

Uma dica interessante para o futuro é explorar o método anyMatch(), que verifica se algum elemento do fluxo corresponde a uma determinada condição. Veja este exemplo:


List<Integer> numeros = Arrays.asList(1, 2, 3, 4, 5);
boolean temPar = numeros.stream().anyMatch(n -> n % 2 == 0);
System.out.println(temPar);

Este código verifica se há algum número par na lista.

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