Classe Principal
import java.util.*;
public class ExemploArmazenamentoSet {
public static void main(String[] args) {
// Cria uma lista de transações
List<Transacao> transacoes = List.of(
new Transacao(1000, "Compra"),
new Transacao(7000, "Transferência"),
new Transacao(8000, "Depósito"),
new Transacao(4000, "Pagamento")
);
// Usa Stream API para filtrar, logar, encontrar a primeira e coletar em um Set
Set<Transacao> resultado = transacoes.stream()
.filter(t -> t.getValor() > 5000) // Filtra apenas as transações com valor maior que 5000
.peek(t -> System.out.println("Filtrada: " + t)) // Usa peek para imprimir cada transação filtrada (log)
.findFirst() // Busca a primeira transação que passou pelo filtro (retorna Optional<Transacao>)
.map(Set::of) // Se encontrar, transforma a transação em um Set com um único elemento
.orElse(Collections.emptySet()); // Se não encontrar nenhuma, retorna um Set vazio
// Imprime o resultado final
System.out.println("Resultado final no Set:");
resultado.forEach(System.out::println);
}
}
Classe Transacao
public class Transacao {
private final double valor;
private final String descricao;
public Transacao(double valor, String descricao) {
this.valor = valor;
this.descricao = descricao;
}
public double getValor() {
return valor;
}
public String getDescricao() {
return descricao;
}
@Override
public String toString() {
return "Transacao{" +
"valor=" + valor +
", descricao='" + descricao + '\'' +
'}';
}
}