**Exercício 1: **
package streams;
import java.util.Arrays;
import java.util.IntSummaryStatistics;
import java.util.List;
public class SummaryStatistics {
public static void main(String[] args) {
List<Integer> numeros = Arrays.asList(10, 20, 30, 40, 50);
IntSummaryStatistics numeroStatistics = numeros.stream()
.mapToInt(Integer::intValue)
.summaryStatistics();
System.out.println("Maior número da lista é: " + numeroStatistics.getMax());
}
}
**Exercício 2: **
package streams;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class GroupingByLength {
public static void main(String[] args) {
List<String> palavras = Arrays.asList("java", "stream", "lambda", "code");
Map<Integer, List<String>> palavrasPorTamanho = palavras.stream()
.collect(Collectors.groupingBy(String::length));
System.out.println(palavrasPorTamanho);
}
}
**Exercício 3: **
package streams;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class Joining {
public static void main(String[] args) {
List<String> nomes = Arrays.asList("Alice", "Bob", "Charlie");
String resultado = nomes.stream()
.collect(Collectors.joining(", "));
System.out.println(resultado);
}
}
**Exercício 4: **
package streams;
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);
int numerosParesAoQuadrado = numeros.stream()
.filter(n -> n % 2 == 0)
.map(n -> n * n)
.reduce(0, Integer::sum);
System.out.println(numerosParesAoQuadrado);
}
}
**Exercício 5: **
package streams;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<Integer> lista = Arrays.asList(1, 2, 3, 4, 5, 6);
Map<Boolean, List<Integer>> numerosDividos = lista.stream()
.collect(Collectors.partitioningBy(n -> n % 2 == 0));
System.out.println("Pares: " + numerosDividos.get(true));
System.out.println("Ímpares: " + numerosDividos.get(false));
}
}
**Exercício 6: **
public class Main {
public static void main(String[] args) {
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")
);
Map<String, List<Produto>> produtosCategoria = produtos.stream()
.collect(Collectors.groupingBy(Produto::getCategoria));
produtosCategoria.forEach((nomeCategoria, nomeProdutos) ->
System.out.println(nomeCategoria + ": " + nomeProdutos));
}
}
**Exercício 7: **
public class Main {
public static void main(String[] args) {
List<Produto> produtos = Arrays.asList(
...
);
Map<String, Long> quantidadePorCategoria = produtos.stream()
.collect(Collectors.groupingBy(Produto::getCategoria, Collectors.counting()));
System.out.println("Quantidade de produtos: " + quantidadePorCategoria);
}
}
}
}
**Exercício 8: **
Map<String, Optional<Produto>> produtosMaisCaros = produtos.stream()
.collect(Collectors.groupingBy(
Produto::getCategoria,
Collectors.maxBy(
Comparator.comparingDouble(Produto::getPreco)
)
));
System.out.println(produtosMaisCaros);
}
}
**Exercício 9: **
Map<String, Double> precosCategoria = produtos.stream()
.collect(Collectors.groupingBy(
Produto::getCategoria,
Collectors.summingDouble(Produto::getPreco)));
System.out.println(precosCategoria);
}
}