Advertisement
arthurgregorio

FiltroEmLista

May 23rd, 2020
1,889
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.45 KB | None | 0 0
  1. package listas;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.List;
  5. import java.util.stream.Collectors;
  6.  
  7. /**
  8.  *
  9.  * @author Arthur
  10.  */
  11. public class FiltroEmLista {
  12.    
  13.     public static void main(String[] args) {
  14.         final FiltroEmLista filtroEmLista = new FiltroEmLista();
  15.         filtroEmLista.executar();
  16.     }
  17.    
  18.     private void executar() {
  19.        
  20.         // cria as pessoas
  21.         final Pessoa p1 = new Pessoa("Jovem 1", 30);
  22.         final Pessoa p2 = new Pessoa("Jovem 2", 33);
  23.         final Pessoa p3 = new Pessoa("Jovem 3", 20);
  24.         final Pessoa p4 = new Pessoa("Jovem 4", 19);
  25.         final Pessoa p5 = new Pessoa("Jovem 5", 10);
  26.        
  27.         // cria uma lista de pessoas
  28.         final List<Pessoa> pessoas = new ArrayList<>();
  29.        
  30.         // adiciona elas na lista
  31.         pessoas.add(p1);
  32.         pessoas.add(p2);
  33.         pessoas.add(p3);
  34.         pessoas.add(p4);
  35.         pessoas.add(p5);
  36.        
  37.         /*
  38.         filtramos todas as pessoas com idade maior ou igual a 30, e colocamos
  39.         em uma nova lista para mostrarmos na tela
  40.         */
  41.         final List<Pessoa> trintaOuMais = pessoas.stream()
  42.                 .filter(pessoa -> pessoa.getIdade() >= 30)
  43.                 .collect(Collectors.toList());
  44.        
  45.         //  o codigo abaixo equivale ao codigo da linha  41
  46.         /*
  47.         final List<Pessoa> trintaOuMais = new ArrayList<>();
  48.         for (Pessoa pessoa : pessoas) {
  49.             if (pessoa.getIdade() >= 30) {
  50.                 trintaOuMais.add(pessoa)
  51.             }
  52.         }
  53.         */
  54.  
  55.         // mostra no console as pessoas filtradas
  56.         trintaOuMais.forEach(System.out::print);
  57.        
  58.         /*
  59.         suponha a regra onde não podem haver pessoas com o mesmo nome na lista
  60.         podemos verificar e lançar uma exception de erro caso tentem inserir uma
  61.         pessoa com o mesmo nome
  62.         */
  63.         final var p6 = new Pessoa("Jovem 1", 12); // mesmo nome de p1
  64.        
  65.         pessoas.stream()
  66.                 .filter(pessoa -> pessoa.getNome().equals(p6.getNome()))
  67.                 .findAny()
  68.                 .ifPresent(pessoa -> {
  69.                     throw new IllegalArgumentException(
  70.                             "Nome informado já esta presente nesta lista! -> "
  71.                                     + pessoa.toString());
  72.                 });
  73.        
  74.         // o codigo abaixo equivale ao codigo das linhas 65 a 71
  75.         /*
  76.         for (Pessoa pessoa : pessoas) {
  77.             if (pessoa.getNome().equals(p6.getNome())) {
  78.                 throw new IllegalArgumentException(
  79.                             "Nome informado já esta presente nesta lista! -> "
  80.                                     + pessoa.toString());
  81.             }
  82.         }
  83.         */
  84.        
  85.         /*
  86.         Se vc estiver usando vetores (que nao devem mais serem usados desde o
  87.         java 5 por uma serie de razoes, prefira sempre a API de Collections)
  88.         */
  89.         final Pessoa pessoasVetor[] = new Pessoa[]{p1, p2, p3, p4, p5};
  90.        
  91.         /*
  92.         o codigo tanto para filtrar e o mesmo a ser utilizado com as listas
  93.         dentro de um "enhanced for"
  94.         */
  95.         for (Pessoa pessoa : pessoasVetor) {
  96.             if (pessoa.getNome().equals(p6.getNome())) {
  97.                 throw new IllegalArgumentException(
  98.                             "Nome informado já esta presente nesta lista! -> "
  99.                                     + pessoa.toString());
  100.             }
  101.         }        
  102.     }
  103.    
  104.     // um POJO simples para receber os dados da pessoa
  105.     private class Pessoa {
  106.        
  107.         private String nome;
  108.         private int idade;
  109.  
  110.         public Pessoa(String nome, int idade) {
  111.             this.nome = nome;
  112.             this.idade = idade;
  113.         }
  114.        
  115.         /*
  116.         sobrescrevendo o metodo toString() consigo utilizar a habilidade do
  117.         java de que toda vez que eu mandar 'printar' um objeto, este metodo
  118.         por padrao e invocado
  119.         */
  120.         @Override
  121.         public String toString() {
  122.             return "Nome: " + this.nome + ", idade: " + this.idade;
  123.         }
  124.        
  125.         public String getNome() {
  126.             return nome;
  127.         }
  128.  
  129.         public void setNome(String nome) {
  130.             this.nome = nome;
  131.         }
  132.  
  133.         public int getIdade() {
  134.             return idade;
  135.         }
  136.  
  137.         public void setIdade(int idade) {
  138.             this.idade = idade;
  139.         }
  140.     }
  141. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement