6, 7, 8 E 9.
PRINCIPAL
package br.com.projetoalura.br.com.projetoalura.SEIS;
import br.com.projetoalura.SEIS.Produto;
import java.util.*;
import java.util.stream.Collectors;
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")
);
System.out.println("--- RESULTADOS DOS EXERCÍCIOS ---");
Map<String, List<Produto>> porCategoria = produtos.stream()
.collect(Collectors.groupingBy(Produto::getCategoria));
System.out.println("\n6. Produtos por Categoria: " + porCategoria);
Map<String, Long> contagemPorCategoria = produtos.stream()
.collect(Collectors.groupingBy(Produto::getCategoria, Collectors.counting()));
System.out.println("\n7. Quantidade por Categoria: " + contagemPorCategoria);
Map<String, Optional<Produto>> maisCaroPorCategoria = produtos.stream()
.collect(Collectors.groupingBy(Produto::getCategoria,
Collectors.maxBy(Comparator.comparingDouble(Produto::getPreco))));
System.out.println("\n8. Mais caro por Categoria: " + maisCaroPorCategoria);
Map<String, Double> somaPorCategoria = produtos.stream()
.collect(Collectors.groupingBy(Produto::getCategoria,
Collectors.summingDouble(Produto::getPreco)));
System.out.println("\n9. Valor Total por Categoria: " + somaPorCategoria);
List<Produto> filtroEspecial = produtos.stream()
.filter(p -> p.getCategoria().equals("Eletrônicos"))
.filter(p -> p.getPreco() < 1000)
.sorted(Comparator.comparingDouble(Produto::getPreco))
.collect(Collectors.toList());
System.out.println("\nEXTRA. Filtro Eletrônicos < 1000: " + filtroEspecial);
}
}
PRODUTO
package br.com.projetoalura.SEIS;
public class Produto {
private String nome;
private double preco;
private String categoria;
public Produto(String nome, double preco, String categoria) {
this.nome = nome;
this.preco = preco;
this.categoria = categoria;
}
public String getNome() { return nome; }
public double getPreco() { return preco; }
public String getCategoria() { return categoria; }
@Override
public String toString() {
return nome + " (R$ " + preco + ")";
}
}
1
package br.com.projetoalura.UM;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
public class Main {
public static void main(String[] args) {
List<Integer> numeros = Arrays.asList(10, 20, 30, 40, 50);
Optional<Integer> max = numeros.stream()
.max(Integer::compare);
max.ifPresent(System.out::println);
}
}
2
package br.com.projetoalura.DOIS;
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<String> palavras = Arrays.asList("java", "stream", "lambda", "code");
Map<Integer, List<String>> agrupamento = palavras.stream()
.collect(Collectors.groupingBy(String::length));
System.out.println(agrupamento);
}
}
3
public class Main {
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);
}
}
4
public class Main {
public static void main(String[] args) {
List<Integer> numeros = Arrays.asList(1, 2, 3, 4, 5, 6);
int somaDosQuadrados = numeros.stream()
.filter(n -> n % 2 == 0)
.map(n -> n * n)
.reduce(0, Integer::sum);
System.out.println(somaDosQuadrados);
}
}
5
public class Main {
public static void main(String[] args) {
List<Integer> numeros = Arrays.asList(1, 2, 3, 4, 5, 6);
Map<Boolean, List<Integer>> particionado = numeros.stream()
.collect(Collectors.partitioningBy(n -> n % 2 == 0));
System.out.println("Pares: " + particionado.get(true));
System.out.println("Ímpares: " + particionado.get(false));
}
}