1)
import java.util.*;
public class Main {
public static void main(String[] args) {
List<Integer> numeros = Arrays.asList(10, 20, 30, 40, 50);
// Passo 1: Transforma a lista em stream
// Passo 2: Usa max() para encontrar o maior
// Passo 3: get() pega o valor (Optional)
int maior = numeros.stream().max(Integer::compare).get();
System.out.println("Maior: " + maior); // Saída: 50
}
}
2)
import java.util.*;
public class Main {
public static void main(String[] args) {
List<String> palavras = Arrays.asList("java", "stream", "lambda", "code");
// Passo 1: Transforma em stream
// Passo 2: Agrupa usando o tamanho da string como chave
Map<Integer, List<String>> resultado = palavras.stream()
.collect(Collectors.groupingBy(String::length));
System.out.println(resultado); // Saída: {4=[java, code], 6=[stream, lambda]}
}
}
3)
import java.util.*;
public class Main {
public static void main(String[] args) {
List<String> nomes = Arrays.asList("Alice", "Bob", "Charlie");
// Passo 1: Transforma em stream
// Passo 2: Junta os elementos com ", " entre eles
String resultado = nomes.stream().collect(Collectors.joining(", "));
System.out.println(resultado); // Saída: Alice, Bob, Charlie
}
}
4)
import java.util.*;
public class Main {
public static void main(String[] args) {
List<Integer> numeros = Arrays.asList(1, 2, 3, 4, 5, 6);
// Passo 1: Filtra apenas pares
// Passo 2: Eleva ao quadrado
// Passo 3: Soma tudo
int soma = numeros.stream()
.filter(n -> n % 2 == 0)
.map(n -> n * n)
.reduce(0, Integer::sum);
System.out.println("Soma: " + soma); // Saída: 56 (4 + 16 + 36)
}
}
5)
import java.util.*;
public class Main {
public static void main(String[] args) {
List<Integer> numeros = Arrays.asList(1, 2, 3, 4, 5, 6);
// Passo 1: Particiona em true (pares) e false (ímpares)
Map<Boolean, List<Integer>> grupos = numeros.stream()
.collect(Collectors.partitioningBy(n -> n % 2 == 0));
System.out.println("Pares: " + grupos.get(true)); // [2, 4, 6]
System.out.println("Ímpares: " + grupos.get(false)); // [1, 3, 5]
}
}
6)
import java.util.*;
public class Main {
public static void main(String[] args) {
List<Produto> produtos = Arrays.asList(
new Produto("Teclado", 200.0, "Eletrônicos"),
new Produto("Cadeira", 300.0, "Móveis")
);
// Passo 1: Agrupa usando a categoria como chave
Map<String, List<Produto>> porCategoria = produtos.stream()
.collect(Collectors.groupingBy(Produto::getCategoria));
System.out.println(porCategoria);
}
}
7)
// Continuando com a lista de produtos...
// Passo 1: Agrupa contando os elementos de cada categoria
Map<String, Long> contagem = produtos.stream()
.collect(Collectors.groupingBy(
Produto::getCategoria,
Collectors.counting()
));
System.out.println(contagem); // Ex: {"Eletrônicos"=3, "Móveis"=2}
8)
// Continuando com a lista de produtos...
// Passo 1: Agrupa encontrando o máximo por preço em cada categoria
Map<String, Optional<Produto>> maisCaros = produtos.stream()
.collect(Collectors.groupingBy(
Produto::getCategoria,
Collectors.maxBy(Comparator.comparing(Produto::getPreco))
));
maisCaros.forEach((cat, prod) ->
System.out.println(cat + ": " + prod.get().getNome()));
9)
// Continuando com a lista de produtos...
// Passo 1: Agrupa somando os preços por categoria
Map<String, Double> totais = produtos.stream()
.collect(Collectors.groupingBy(
Produto::getCategoria,
Collectors.summingDouble(Produto::getPreco)
));
System.out.println(totais); // Ex: {"Eletrônicos"=1900.0, "Móveis"=1000.0}