Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package listas;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.stream.Collectors;
- /**
- *
- * @author Arthur
- */
- public class FiltroEmLista {
- public static void main(String[] args) {
- final FiltroEmLista filtroEmLista = new FiltroEmLista();
- filtroEmLista.executar();
- }
- private void executar() {
- // cria as pessoas
- final Pessoa p1 = new Pessoa("Jovem 1", 30);
- final Pessoa p2 = new Pessoa("Jovem 2", 33);
- final Pessoa p3 = new Pessoa("Jovem 3", 20);
- final Pessoa p4 = new Pessoa("Jovem 4", 19);
- final Pessoa p5 = new Pessoa("Jovem 5", 10);
- // cria uma lista de pessoas
- final List<Pessoa> pessoas = new ArrayList<>();
- // adiciona elas na lista
- pessoas.add(p1);
- pessoas.add(p2);
- pessoas.add(p3);
- pessoas.add(p4);
- pessoas.add(p5);
- /*
- filtramos todas as pessoas com idade maior ou igual a 30, e colocamos
- em uma nova lista para mostrarmos na tela
- */
- final List<Pessoa> trintaOuMais = pessoas.stream()
- .filter(pessoa -> pessoa.getIdade() >= 30)
- .collect(Collectors.toList());
- // o codigo abaixo equivale ao codigo da linha 41
- /*
- final List<Pessoa> trintaOuMais = new ArrayList<>();
- for (Pessoa pessoa : pessoas) {
- if (pessoa.getIdade() >= 30) {
- trintaOuMais.add(pessoa)
- }
- }
- */
- // mostra no console as pessoas filtradas
- trintaOuMais.forEach(System.out::print);
- /*
- suponha a regra onde não podem haver pessoas com o mesmo nome na lista
- podemos verificar e lançar uma exception de erro caso tentem inserir uma
- pessoa com o mesmo nome
- */
- final var p6 = new Pessoa("Jovem 1", 12); // mesmo nome de p1
- pessoas.stream()
- .filter(pessoa -> pessoa.getNome().equals(p6.getNome()))
- .findAny()
- .ifPresent(pessoa -> {
- throw new IllegalArgumentException(
- "Nome informado já esta presente nesta lista! -> "
- + pessoa.toString());
- });
- // o codigo abaixo equivale ao codigo das linhas 65 a 71
- /*
- for (Pessoa pessoa : pessoas) {
- if (pessoa.getNome().equals(p6.getNome())) {
- throw new IllegalArgumentException(
- "Nome informado já esta presente nesta lista! -> "
- + pessoa.toString());
- }
- }
- */
- /*
- Se vc estiver usando vetores (que nao devem mais serem usados desde o
- java 5 por uma serie de razoes, prefira sempre a API de Collections)
- */
- final Pessoa pessoasVetor[] = new Pessoa[]{p1, p2, p3, p4, p5};
- /*
- o codigo tanto para filtrar e o mesmo a ser utilizado com as listas
- dentro de um "enhanced for"
- */
- for (Pessoa pessoa : pessoasVetor) {
- if (pessoa.getNome().equals(p6.getNome())) {
- throw new IllegalArgumentException(
- "Nome informado já esta presente nesta lista! -> "
- + pessoa.toString());
- }
- }
- }
- // um POJO simples para receber os dados da pessoa
- private class Pessoa {
- private String nome;
- private int idade;
- public Pessoa(String nome, int idade) {
- this.nome = nome;
- this.idade = idade;
- }
- /*
- sobrescrevendo o metodo toString() consigo utilizar a habilidade do
- java de que toda vez que eu mandar 'printar' um objeto, este metodo
- por padrao e invocado
- */
- @Override
- public String toString() {
- return "Nome: " + this.nome + ", idade: " + this.idade;
- }
- public String getNome() {
- return nome;
- }
- public void setNome(String nome) {
- this.nome = nome;
- }
- public int getIdade() {
- return idade;
- }
- public void setIdade(int idade) {
- this.idade = idade;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement