SlideShare ist ein Scribd-Unternehmen logo
1 von 84
Downloaden Sie, um offline zu lesen
Recapitulando... public class Onibus {
                      private String nome;
                      private String linha;

                      public Onibus(String nome,
                                    String linha) {
                        this.nome = nome;
                        this.linha = linha;
                      }

                      // getters
                  }
Recapitulando... public class Onibus {
                      private String nome;
                      private String linha;

                      public Onibus(String nome,
                                    String linha) {
                        this.nome = nome;
                        this.linha = linha;
                      }

                      // getters
                  }
Recapitulando...
Peraí! Estávamos
        Recapitulando...
public class PontoDeOnibus {

    private String nome;
    private double latitude;
                               Recapitulando...
    private double longitude;
    private ArrayList<Onibus> onibuses;

    public PontoDeOnibus(String nome,
                 double latitude, double longitude) {
        this.____ = ____;
        this.onibuses = new ArrayList<Onibus>();
    }
    // getters
    // adiciona e passa
}
public class PontoDeOnibus {

    private String nome;
    private double latitude;
                              Recapitulando...
    private double longitude;
    private ArrayList<Onibus> onibuses;

    public PontoDeOnibus(String nome,
                 double latitude, double longitude) {
        this.____ = ____;
        this.onibuses = new ArrayList<Onibus>();
    }
    // getters
    // adiciona e passa
}
public class PontoDeOnibus {
                  Biza
    private String nome;rro!      Recapitulando...
    private double latitude;
    private double longitude;
    private ArrayList<Onibus> onibuses;

    public PontoDeOnibus(String nome,
                 double latitude, double longitude) {
        this.____ = ____;
        this.onibuses = new ArrayList<Onibus>();
    }
    // getters
    // adiciona e passaOnibus
}
public class PontoDeOnibus {
                  Biza
    private String nome;rro!      Recapitulando...
    private double latitude;
    private double longitude;
    private ArrayList<Onibus> onibuses;

    public PontoDeOnibus(String nome,
                 double latitude, double longitude) {
              Ninguém
        this.____ = ____;
                  faz = new ArrayList<Onibus>();
        this.onibuses
    }           assim!
    // getters
    // adiciona e passa
}
Por que não?
Entendendo
    melhor as
        Collections
    Cecilia Fernandes
    @cecifernandes
    github.com/ceci
Antes de
começarmos...
public class PontoDeOnibus {

    private String nome;
    private double latitude;
    private double longitude;
    private ArrayList<Onibus> onibuses;

    public PontoDeOnibus(String nome,
                 double latitude, double longitude) {
        // ...
        this.onibuses = new ArrayList<Onibus>();
    }
    // getters
    // adiciona e passa
}
public class PontoDeOnibus {

    private String nome;
    private double latitude;         localizacao
    private double longitude;
    private ArrayList<Onibus> onibuses;

    public PontoDeOnibus(String nome,
                 double latitude, double longitude) {
        // ...
        this.onibuses = new ArrayList<Onibus>();
    }
    // getters
    // adiciona e passa
}
public class PontoDeOnibus {

    private String nome;
    private Coordenada localizacao;
    private ArrayList<Onibus> onibuses;


    public PontoDeOnibus(String nome,
                          Coordenada localizacao) {
        // ...
        this.onibuses = new ArrayList<Onibus>();
    }
    // getters
    // adiciona e passa
}
Agora sim!
public class PontoDeOnibus {

    private String nome;
    private Coordenada localizacao;
    private ArrayList<Onibus> onibuses;


    public PontoDeOnibus(String nome,
                          Coordenada localizacao) {
        // ...
        this.onibuses = new ArrayList<Onibus>();
    }
    // getters
    // adiciona e passa
}
public class PontoDeOnibus {

    private String nome;
    private Coordenada localizacao;
    private ArrayList<Onibus> onibuses;


    public PontoDeOnibus(String nome,
                          Coordenada localizacao) {
        // ...
        this.onibuses = new ArrayList<Onibus>();
    }
    // getters
    // adiciona e passa
}
private ArrayList<Onibus>
private ArrayList<Onibus>



private LinkedList<Onibus>
private ArrayList<Onibus>



private LinkedList<Onibus>


private Vector<Onibus>
Qual?
private ArrayList<Onibus>



private LinkedList<Onibus>


private Vector<Onibus>
Qual?
private ArrayList<Onibus>

                             a z !
                    to f
             a n
private LinkedList<Onibus>
           T
private Vector<Onibus>
Qualquer coisa
que seja uma...
Qualquer coisa
que seja uma...

          List
Qualquer coisa
que seja uma...

  java.util.List
public class PontoDeOnibus {

    private String nome;
    private Coordenada localizacao;

         Coding
    private ArrayList<Onibus> onibuses;




        // ...
              time!
    public PontoDeOnibus(String nome,
                          Coordenada localizacao) {

        this.onibuses = new ArrayList<Onibus>();
    }
    // getters
    // adiciona e passaOnibus
}
public class PontoDeOnibus {

    private String nome;
    private Coordenada localizacao;
            O getOnibuses
    private ArrayList<Onibus> onibuses;

             também está
    public PontoDeOnibus(String nome,
                  falho... localizacao) {
                       Coordenada
      // ...
      this.onibuses = new ArrayList<Onibus>();
    }
    // getters
    // adiciona e passaOnibus
}
Antes:
public List<Onibus> getOnibuses() {
  return onibuses;
}


Depois:
public List<Onibus> getOnibuses() {
  return Collections.unmodifiableList(onibuses);
}
Antes:
public List<Onibus> getOnibuses() {
  return onibuses;
}


Depois:
public List<Onibus> getOnibuses() {
  return Collections.unmodifiableList(onibuses);
}
Mas...
Mas...


         List?
Podia ser...
Set
TreeSet
TreeSet
TreeSet
      <


   <          <


          <       <
TreeSet
      <                >


   <       >       <           >


       >       <           <       >
HashSet
HashSet
HashSet
HashSet




?
HashSet
HashSet
HashSet



@Override
public int hashCode() {
     final int prime = 31;
     int result = 1;
     result = prime * result + ((linha == null) ? 0 : linha.hashCode());
     return result;
}
HashSet



@Override
public int hashCode() {
     final int prime = 31;
     int result = 1;
     result = prime * result + ((linha == null) ? 0 : linha.hashCode());
     return result;
}
HashSet
E aí...
TreeSet
LinkedList

TreeSet
LinkedList

TreeSet



     ArrayList
LinkedList

TreeSet    HashSet



     ArrayList
LinkedList

TreeSet
         d os
            HashSet
     T o        !
         rv e m
     s e
     ArrayList
LinkedList
                 is a
             r co .
           e HashSet
    al q u       m a .
Q u
TreeSet
            ja u
    e   s e
 qu
       ArrayList
LinkedList
                     is a
              r co .
           e HashSet
    al q u        m   a  .
Q u
TreeSet
            ja  u
    e   s e
 qu                    n
                c t io
      C    l le
       ArrayList
        o
E aí...
public class TestaBusao {

   public static void main(String[] args) {

 Vamos ver...
      List<Onibus> onibuses = Arrays.asList(
                    new Onibus("2002/10", "TERMINA
                    new Onibus("2290/10", "TERMINA
                    new Onibus("5108/10", "JARDIM C
                    new Onibus("5111/10", "TERMINA
                    new Onibus("5300/10", "TERMINA
                    new Onibus("6403/10", "TERMINA
                    new Onibus("9300/10", "TERMINA
                    new Onibus("3539/10", "CIDADE
                    new Onibus("3539/10", "TERMINA
public class TestaBusao {

   public static void main(String[] args) {

 Vamos ver...
      List<Onibus> onibuses = Arrays.asList(
                    new Onibus("2002/10", "TERMINA
                    new Onibus("2290/10", "TERMINA

  performance!      new Onibus("5108/10", "JARDIM C
                    new Onibus("5111/10", "TERMINA
                    new Onibus("5300/10", "TERMINA
                    new Onibus("6403/10", "TERMINA
                    new Onibus("9300/10", "TERMINA
                    new Onibus("3539/10", "CIDADE
                    new Onibus("3539/10", "TERMINA
tempo




        Linked   Array   Tree   Hash
          List    List   Set     Set
Então...
 performance!
public class PontoDeOnibus {

  // atributos

 Vamos ver...
  // construtor

  public boolean passa(Onibus onibus) {
    for (Onibus o : this.onibuses)
        if (o.getLinha().equals(onibus.getLinha()))
            return true;
    return false;
  }
  public void adicionaOnibus(Onibus onibus) {
    if (!onibuses.contains(onibus)) {
public class PontoDeOnibus {

  // atributos

 Vamos ver...
  // construtor

  public boolean passa(Onibus onibus) {

    o adiciona!
    for (Onibus o : this.onibuses)
        if (o.getLinha().equals(onibus.getLinha()))
            return true;
    return false;
  }
  public void adicionaOnibus(Onibus onibus) {
    if (!onibuses.contains(onibus)) {
List
 public void adiciona (Onibus onibus) {
   if (! onibuses.contains(onibus)) {
       onibuses.add(onibus);
   }
 }


Set
 public void adiciona (Onibus onibus) {
   onibuses.add(onibus);
 }
List
 public void adiciona (Onibus onibus) {
   if (! onibuses.contains(onibus)) {
       onibuses.add(onibus);
   }
 }


Set         ...e é mais rápido para buscas!
 public void adiciona (Onibus onibus) {
   onibuses.add(onibus);
 }
Cool!
Cool!

Só vou usar Set,
daqui pra frente!
Onibus
  tem...
public class Onibus {

    private String nome;
    private String linha;


    public Onibus(String nome,
                  String linha) {
      this.nome = nome;
      this.linha = linha;
    }

    // getters
}
public class Onibus {

    private String nome;
    private String linha;


    public Onibus(String nome,
                  String linha) {
      this.nome = nome;
      this.linha = linha;
    }

    // getters
}
public class Onibus {

    private String nome;
    private String linha;
    private List<PontoDeOnibus> itinerario;

    public Onibus(String nome, String linha,
                   List<PontoDeOnibus> itinerario) {
      this.nome = nome;
      this.linha = linha;
      this.itinerario = itinerario;
    }

    // getters
}
Cool!
WAIT!
Quero a
  lista de
  ônibus
ordenada?
public class PontoDeOnibus {

    private String nome;
    private Coordenada localizacao;

     Codar mais
    private ArrayList<Onibus> onibuses;




    um pouquinho!
    public PontoDeOnibus(String nome,

        // ...
                          Coordenada localizacao) {

        this.onibuses = new ArrayList<Onibus>();
    }
    // getters
    // adiciona e passaOnibus
}
Comparator<Onibus>
public class OrdenadoPorLinha
                 implements Comparator<Onibus>{
  @Override
  public int compare(Onibus o1, Onibus o2) {
      return o1.getLinha().compareTo(o2.getLinha());
  }
}
Comparator<Onibus>

...lections.sort(onibuses, new Comparator<Onibus>{
    @Override
    public int compare(Onibus o1, Onibus o2) {
       return o1.getLinha().compareTo(o2.getLinha());
    }
});
                      nô ni ma
                 ss ea
          Cla
Cool!
Cool!
        im !
    ra s
A go
Entendendo
    melhor as
        Collections
    Cecilia Fernandes
    @cecifernandes
    github.com/ceci

Weitere ähnliche Inhalte

Was ist angesagt?

Perl Moderno, dia4
Perl Moderno, dia4Perl Moderno, dia4
Perl Moderno, dia4garux
 
Iteráveis e geradores (versão RuPy)
Iteráveis e geradores (versão RuPy)Iteráveis e geradores (versão RuPy)
Iteráveis e geradores (versão RuPy)Luciano Ramalho
 
Python: a primeira mordida
Python: a primeira mordidaPython: a primeira mordida
Python: a primeira mordidaLuciano Ramalho
 
Orientação a objetos em Python (compacto)
Orientação a objetos em Python (compacto)Orientação a objetos em Python (compacto)
Orientação a objetos em Python (compacto)Luciano Ramalho
 
Perl Moderno, dia5
Perl Moderno, dia5Perl Moderno, dia5
Perl Moderno, dia5garux
 
Python para quem sabe Python (aula 2)
Python para quem sabe Python (aula 2)Python para quem sabe Python (aula 2)
Python para quem sabe Python (aula 2)Luciano Ramalho
 
Iteraveis e geradores em Python
Iteraveis e geradores em PythonIteraveis e geradores em Python
Iteraveis e geradores em PythonLuciano Ramalho
 
Interfaces e Polimorfismo - Preparatório Certificação - OCAJP7 - Aula 1 - C
Interfaces e Polimorfismo - Preparatório Certificação - OCAJP7 - Aula 1 - CInterfaces e Polimorfismo - Preparatório Certificação - OCAJP7 - Aula 1 - C
Interfaces e Polimorfismo - Preparatório Certificação - OCAJP7 - Aula 1 - CPaulo Henrique Lerbach Rodrigues
 
Python: Iteraveis, geradores etc
Python: Iteraveis, geradores etcPython: Iteraveis, geradores etc
Python: Iteraveis, geradores etcLuciano Ramalho
 
Minicurso: Python em 4 horas - FATEC SCS 2015
Minicurso: Python em 4 horas - FATEC SCS 2015 Minicurso: Python em 4 horas - FATEC SCS 2015
Minicurso: Python em 4 horas - FATEC SCS 2015 Alan Justino da Silva
 
Perl Moderno, dia3
Perl Moderno, dia3Perl Moderno, dia3
Perl Moderno, dia3garux
 
Objetos Pythonicos - compacto
Objetos Pythonicos - compactoObjetos Pythonicos - compacto
Objetos Pythonicos - compactoLuciano Ramalho
 
Strings e manipulação de variáveis
Strings e manipulação de variáveisStrings e manipulação de variáveis
Strings e manipulação de variáveis111111119
 
Programação funcional tipada: uma introdução
Programação funcional tipada: uma introduçãoProgramação funcional tipada: uma introdução
Programação funcional tipada: uma introduçãoArthur Xavier
 
Escopos e Modificadores - Preparatório Certificação - OCAJP7 - Aula 1 - B
Escopos e Modificadores - Preparatório Certificação - OCAJP7 - Aula 1 - BEscopos e Modificadores - Preparatório Certificação - OCAJP7 - Aula 1 - B
Escopos e Modificadores - Preparatório Certificação - OCAJP7 - Aula 1 - BPaulo Henrique Lerbach Rodrigues
 
Orientação a Objetos em Python
Orientação a Objetos em PythonOrientação a Objetos em Python
Orientação a Objetos em PythonLuciano Ramalho
 
Programação funcional em JavaScript: como e por quê?
Programação funcional em JavaScript: como e por quê?Programação funcional em JavaScript: como e por quê?
Programação funcional em JavaScript: como e por quê?Arthur Xavier
 

Was ist angesagt? (20)

Perl Moderno, dia4
Perl Moderno, dia4Perl Moderno, dia4
Perl Moderno, dia4
 
Iteraveis e geradores
Iteraveis e geradoresIteraveis e geradores
Iteraveis e geradores
 
Iteráveis e geradores (versão RuPy)
Iteráveis e geradores (versão RuPy)Iteráveis e geradores (versão RuPy)
Iteráveis e geradores (versão RuPy)
 
Python: a primeira mordida
Python: a primeira mordidaPython: a primeira mordida
Python: a primeira mordida
 
Orientação a objetos em Python (compacto)
Orientação a objetos em Python (compacto)Orientação a objetos em Python (compacto)
Orientação a objetos em Python (compacto)
 
Perl Moderno, dia5
Perl Moderno, dia5Perl Moderno, dia5
Perl Moderno, dia5
 
Python para quem sabe Python (aula 2)
Python para quem sabe Python (aula 2)Python para quem sabe Python (aula 2)
Python para quem sabe Python (aula 2)
 
Iteraveis e geradores em Python
Iteraveis e geradores em PythonIteraveis e geradores em Python
Iteraveis e geradores em Python
 
Interfaces e Polimorfismo - Preparatório Certificação - OCAJP7 - Aula 1 - C
Interfaces e Polimorfismo - Preparatório Certificação - OCAJP7 - Aula 1 - CInterfaces e Polimorfismo - Preparatório Certificação - OCAJP7 - Aula 1 - C
Interfaces e Polimorfismo - Preparatório Certificação - OCAJP7 - Aula 1 - C
 
Python: Iteraveis, geradores etc
Python: Iteraveis, geradores etcPython: Iteraveis, geradores etc
Python: Iteraveis, geradores etc
 
Minicurso: Python em 4 horas - FATEC SCS 2015
Minicurso: Python em 4 horas - FATEC SCS 2015 Minicurso: Python em 4 horas - FATEC SCS 2015
Minicurso: Python em 4 horas - FATEC SCS 2015
 
Perl Moderno, dia3
Perl Moderno, dia3Perl Moderno, dia3
Perl Moderno, dia3
 
Objetos Pythonicos - compacto
Objetos Pythonicos - compactoObjetos Pythonicos - compacto
Objetos Pythonicos - compacto
 
Strings e manipulação de variáveis
Strings e manipulação de variáveisStrings e manipulação de variáveis
Strings e manipulação de variáveis
 
Programação funcional tipada: uma introdução
Programação funcional tipada: uma introduçãoProgramação funcional tipada: uma introdução
Programação funcional tipada: uma introdução
 
Escopos e Modificadores - Preparatório Certificação - OCAJP7 - Aula 1 - B
Escopos e Modificadores - Preparatório Certificação - OCAJP7 - Aula 1 - BEscopos e Modificadores - Preparatório Certificação - OCAJP7 - Aula 1 - B
Escopos e Modificadores - Preparatório Certificação - OCAJP7 - Aula 1 - B
 
Orientação a Objetos em Python
Orientação a Objetos em PythonOrientação a Objetos em Python
Orientação a Objetos em Python
 
Programação funcional em JavaScript: como e por quê?
Programação funcional em JavaScript: como e por quê?Programação funcional em JavaScript: como e por quê?
Programação funcional em JavaScript: como e por quê?
 
Java 06 Strings Arrays
Java 06 Strings ArraysJava 06 Strings Arrays
Java 06 Strings Arrays
 
Python Class
Python ClassPython Class
Python Class
 

Ähnlich wie Usando melhor as Collections

Conexão Java 2012 - Orientação a Objetos das Galáxias
Conexão Java 2012 - Orientação a Objetos das GaláxiasConexão Java 2012 - Orientação a Objetos das Galáxias
Conexão Java 2012 - Orientação a Objetos das GaláxiasMaurício Aniche
 
Fugindo para as colinas com Python - Julio Biason - Tchelinux Bento Gonçalves...
Fugindo para as colinas com Python - Julio Biason - Tchelinux Bento Gonçalves...Fugindo para as colinas com Python - Julio Biason - Tchelinux Bento Gonçalves...
Fugindo para as colinas com Python - Julio Biason - Tchelinux Bento Gonçalves...Tchelinux
 
Ruby - Criando código para máquinas e humanos
Ruby - Criando código para máquinas e humanosRuby - Criando código para máquinas e humanos
Ruby - Criando código para máquinas e humanosGregorio Kusowski
 
Classes Anônimas, Internas e Coleções Java
Classes Anônimas, Internas e Coleções JavaClasses Anônimas, Internas e Coleções Java
Classes Anônimas, Internas e Coleções Javadanrleywillian1
 
Linguagem de programação implementação de classes
Linguagem de programação   implementação de classesLinguagem de programação   implementação de classes
Linguagem de programação implementação de classesCarlos Melo
 
Java orientação a objetos (variaveis de instancia e metodos)
Java   orientação a objetos (variaveis de instancia e metodos)Java   orientação a objetos (variaveis de instancia e metodos)
Java orientação a objetos (variaveis de instancia e metodos)Armando Daniel
 
Kotlin: conhecendo features de uma linguagem moderna
Kotlin: conhecendo features de uma linguagem modernaKotlin: conhecendo features de uma linguagem moderna
Kotlin: conhecendo features de uma linguagem modernaFabrício Rissetto
 
04 modelagem classes
04 modelagem classes04 modelagem classes
04 modelagem classesjosejunior89
 

Ähnlich wie Usando melhor as Collections (12)

Conexão Java 2012 - Orientação a Objetos das Galáxias
Conexão Java 2012 - Orientação a Objetos das GaláxiasConexão Java 2012 - Orientação a Objetos das Galáxias
Conexão Java 2012 - Orientação a Objetos das Galáxias
 
Fugindo para as colinas com Python - Julio Biason - Tchelinux Bento Gonçalves...
Fugindo para as colinas com Python - Julio Biason - Tchelinux Bento Gonçalves...Fugindo para as colinas com Python - Julio Biason - Tchelinux Bento Gonçalves...
Fugindo para as colinas com Python - Julio Biason - Tchelinux Bento Gonçalves...
 
Ruby - Criando código para máquinas e humanos
Ruby - Criando código para máquinas e humanosRuby - Criando código para máquinas e humanos
Ruby - Criando código para máquinas e humanos
 
Classes Anônimas, Internas e Coleções Java
Classes Anônimas, Internas e Coleções JavaClasses Anônimas, Internas e Coleções Java
Classes Anônimas, Internas e Coleções Java
 
Lambda Expressions
Lambda ExpressionsLambda Expressions
Lambda Expressions
 
Grupo2
Grupo2Grupo2
Grupo2
 
Linguagem de programação implementação de classes
Linguagem de programação   implementação de classesLinguagem de programação   implementação de classes
Linguagem de programação implementação de classes
 
Java orientação a objetos (variaveis de instancia e metodos)
Java   orientação a objetos (variaveis de instancia e metodos)Java   orientação a objetos (variaveis de instancia e metodos)
Java orientação a objetos (variaveis de instancia e metodos)
 
PHP Básico - Parte 3
PHP Básico - Parte 3PHP Básico - Parte 3
PHP Básico - Parte 3
 
Kotlin: conhecendo features de uma linguagem moderna
Kotlin: conhecendo features de uma linguagem modernaKotlin: conhecendo features de uma linguagem moderna
Kotlin: conhecendo features de uma linguagem moderna
 
Php
PhpPhp
Php
 
04 modelagem classes
04 modelagem classes04 modelagem classes
04 modelagem classes
 

Mehr von Cecilia Fernandes

Broken windows de práticas ágeis
Broken windows de práticas ágeisBroken windows de práticas ágeis
Broken windows de práticas ágeisCecilia Fernandes
 
Java pra web mais fácil com MVC
Java pra web mais fácil com MVCJava pra web mais fácil com MVC
Java pra web mais fácil com MVCCecilia Fernandes
 
There and back again (as presented at Agile 2012, Dallas, TX)
There and back again (as presented at Agile 2012, Dallas, TX)There and back again (as presented at Agile 2012, Dallas, TX)
There and back again (as presented at Agile 2012, Dallas, TX)Cecilia Fernandes
 
AgileBrazil2012 - Fuja da Inércia
AgileBrazil2012 - Fuja da InérciaAgileBrazil2012 - Fuja da Inércia
AgileBrazil2012 - Fuja da InérciaCecilia Fernandes
 
Melhorando um Ambiente Ágil
Melhorando um Ambiente ÁgilMelhorando um Ambiente Ágil
Melhorando um Ambiente ÁgilCecilia Fernandes
 
O problema é seu... a solução também
O problema é seu... a solução tambémO problema é seu... a solução também
O problema é seu... a solução tambémCecilia Fernandes
 

Mehr von Cecilia Fernandes (8)

Broken windows de práticas ágeis
Broken windows de práticas ágeisBroken windows de práticas ágeis
Broken windows de práticas ágeis
 
Testes Lentos? Agiliza aí!
Testes Lentos? Agiliza aí!Testes Lentos? Agiliza aí!
Testes Lentos? Agiliza aí!
 
Java pra web mais fácil com MVC
Java pra web mais fácil com MVCJava pra web mais fácil com MVC
Java pra web mais fácil com MVC
 
There and back again (as presented at Agile 2012, Dallas, TX)
There and back again (as presented at Agile 2012, Dallas, TX)There and back again (as presented at Agile 2012, Dallas, TX)
There and back again (as presented at Agile 2012, Dallas, TX)
 
AgileBrazil2012 - Fuja da Inércia
AgileBrazil2012 - Fuja da InérciaAgileBrazil2012 - Fuja da Inércia
AgileBrazil2012 - Fuja da Inércia
 
Melhorando um Ambiente Ágil
Melhorando um Ambiente ÁgilMelhorando um Ambiente Ágil
Melhorando um Ambiente Ágil
 
There and back again
There and back againThere and back again
There and back again
 
O problema é seu... a solução também
O problema é seu... a solução tambémO problema é seu... a solução também
O problema é seu... a solução também
 

Kürzlich hochgeladen

ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfNatalia Granato
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 

Kürzlich hochgeladen (6)

ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 

Usando melhor as Collections

  • 1. Recapitulando... public class Onibus { private String nome; private String linha; public Onibus(String nome, String linha) { this.nome = nome; this.linha = linha; } // getters }
  • 2. Recapitulando... public class Onibus { private String nome; private String linha; public Onibus(String nome, String linha) { this.nome = nome; this.linha = linha; } // getters }
  • 4. Peraí! Estávamos Recapitulando...
  • 5. public class PontoDeOnibus { private String nome; private double latitude; Recapitulando... private double longitude; private ArrayList<Onibus> onibuses; public PontoDeOnibus(String nome, double latitude, double longitude) { this.____ = ____; this.onibuses = new ArrayList<Onibus>(); } // getters // adiciona e passa }
  • 6. public class PontoDeOnibus { private String nome; private double latitude; Recapitulando... private double longitude; private ArrayList<Onibus> onibuses; public PontoDeOnibus(String nome, double latitude, double longitude) { this.____ = ____; this.onibuses = new ArrayList<Onibus>(); } // getters // adiciona e passa }
  • 7. public class PontoDeOnibus { Biza private String nome;rro! Recapitulando... private double latitude; private double longitude; private ArrayList<Onibus> onibuses; public PontoDeOnibus(String nome, double latitude, double longitude) { this.____ = ____; this.onibuses = new ArrayList<Onibus>(); } // getters // adiciona e passaOnibus }
  • 8. public class PontoDeOnibus { Biza private String nome;rro! Recapitulando... private double latitude; private double longitude; private ArrayList<Onibus> onibuses; public PontoDeOnibus(String nome, double latitude, double longitude) { Ninguém this.____ = ____; faz = new ArrayList<Onibus>(); this.onibuses } assim! // getters // adiciona e passa }
  • 10. Entendendo melhor as Collections Cecilia Fernandes @cecifernandes github.com/ceci
  • 12. public class PontoDeOnibus { private String nome; private double latitude; private double longitude; private ArrayList<Onibus> onibuses; public PontoDeOnibus(String nome, double latitude, double longitude) { // ... this.onibuses = new ArrayList<Onibus>(); } // getters // adiciona e passa }
  • 13. public class PontoDeOnibus { private String nome; private double latitude; localizacao private double longitude; private ArrayList<Onibus> onibuses; public PontoDeOnibus(String nome, double latitude, double longitude) { // ... this.onibuses = new ArrayList<Onibus>(); } // getters // adiciona e passa }
  • 14. public class PontoDeOnibus { private String nome; private Coordenada localizacao; private ArrayList<Onibus> onibuses; public PontoDeOnibus(String nome, Coordenada localizacao) { // ... this.onibuses = new ArrayList<Onibus>(); } // getters // adiciona e passa }
  • 16. public class PontoDeOnibus { private String nome; private Coordenada localizacao; private ArrayList<Onibus> onibuses; public PontoDeOnibus(String nome, Coordenada localizacao) { // ... this.onibuses = new ArrayList<Onibus>(); } // getters // adiciona e passa }
  • 17. public class PontoDeOnibus { private String nome; private Coordenada localizacao; private ArrayList<Onibus> onibuses; public PontoDeOnibus(String nome, Coordenada localizacao) { // ... this.onibuses = new ArrayList<Onibus>(); } // getters // adiciona e passa }
  • 22. Qual? private ArrayList<Onibus> a z ! to f a n private LinkedList<Onibus> T private Vector<Onibus>
  • 24. Qualquer coisa que seja uma... List
  • 25. Qualquer coisa que seja uma... java.util.List
  • 26. public class PontoDeOnibus { private String nome; private Coordenada localizacao; Coding private ArrayList<Onibus> onibuses; // ... time! public PontoDeOnibus(String nome, Coordenada localizacao) { this.onibuses = new ArrayList<Onibus>(); } // getters // adiciona e passaOnibus }
  • 27. public class PontoDeOnibus { private String nome; private Coordenada localizacao; O getOnibuses private ArrayList<Onibus> onibuses; também está public PontoDeOnibus(String nome, falho... localizacao) { Coordenada // ... this.onibuses = new ArrayList<Onibus>(); } // getters // adiciona e passaOnibus }
  • 28. Antes: public List<Onibus> getOnibuses() { return onibuses; } Depois: public List<Onibus> getOnibuses() { return Collections.unmodifiableList(onibuses); }
  • 29. Antes: public List<Onibus> getOnibuses() { return onibuses; } Depois: public List<Onibus> getOnibuses() { return Collections.unmodifiableList(onibuses); }
  • 31. Mas... List?
  • 32.
  • 33.
  • 34.
  • 36. Set
  • 39. TreeSet < < < < <
  • 40. TreeSet < > < > < > > < < >
  • 47. HashSet @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((linha == null) ? 0 : linha.hashCode()); return result; }
  • 48. HashSet @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((linha == null) ? 0 : linha.hashCode()); return result; }
  • 53. LinkedList TreeSet ArrayList
  • 54. LinkedList TreeSet HashSet ArrayList
  • 55. LinkedList TreeSet d os HashSet T o ! rv e m s e ArrayList
  • 56. LinkedList is a r co . e HashSet al q u m a . Q u TreeSet ja u e s e qu ArrayList
  • 57. LinkedList is a r co . e HashSet al q u m a . Q u TreeSet ja u e s e qu n c t io C l le ArrayList o
  • 59. public class TestaBusao { public static void main(String[] args) { Vamos ver... List<Onibus> onibuses = Arrays.asList( new Onibus("2002/10", "TERMINA new Onibus("2290/10", "TERMINA new Onibus("5108/10", "JARDIM C new Onibus("5111/10", "TERMINA new Onibus("5300/10", "TERMINA new Onibus("6403/10", "TERMINA new Onibus("9300/10", "TERMINA new Onibus("3539/10", "CIDADE new Onibus("3539/10", "TERMINA
  • 60. public class TestaBusao { public static void main(String[] args) { Vamos ver... List<Onibus> onibuses = Arrays.asList( new Onibus("2002/10", "TERMINA new Onibus("2290/10", "TERMINA performance! new Onibus("5108/10", "JARDIM C new Onibus("5111/10", "TERMINA new Onibus("5300/10", "TERMINA new Onibus("6403/10", "TERMINA new Onibus("9300/10", "TERMINA new Onibus("3539/10", "CIDADE new Onibus("3539/10", "TERMINA
  • 61. tempo Linked Array Tree Hash List List Set Set
  • 63. public class PontoDeOnibus { // atributos Vamos ver... // construtor public boolean passa(Onibus onibus) { for (Onibus o : this.onibuses) if (o.getLinha().equals(onibus.getLinha())) return true; return false; } public void adicionaOnibus(Onibus onibus) { if (!onibuses.contains(onibus)) {
  • 64. public class PontoDeOnibus { // atributos Vamos ver... // construtor public boolean passa(Onibus onibus) { o adiciona! for (Onibus o : this.onibuses) if (o.getLinha().equals(onibus.getLinha())) return true; return false; } public void adicionaOnibus(Onibus onibus) { if (!onibuses.contains(onibus)) {
  • 65. List public void adiciona (Onibus onibus) { if (! onibuses.contains(onibus)) { onibuses.add(onibus); } } Set public void adiciona (Onibus onibus) { onibuses.add(onibus); }
  • 66. List public void adiciona (Onibus onibus) { if (! onibuses.contains(onibus)) { onibuses.add(onibus); } } Set ...e é mais rápido para buscas! public void adiciona (Onibus onibus) { onibuses.add(onibus); }
  • 67. Cool!
  • 68. Cool! Só vou usar Set, daqui pra frente!
  • 69.
  • 71. public class Onibus { private String nome; private String linha; public Onibus(String nome, String linha) { this.nome = nome; this.linha = linha; } // getters }
  • 72. public class Onibus { private String nome; private String linha; public Onibus(String nome, String linha) { this.nome = nome; this.linha = linha; } // getters }
  • 73. public class Onibus { private String nome; private String linha; private List<PontoDeOnibus> itinerario; public Onibus(String nome, String linha, List<PontoDeOnibus> itinerario) { this.nome = nome; this.linha = linha; this.itinerario = itinerario; } // getters }
  • 74. Cool!
  • 75.
  • 76. WAIT!
  • 77. Quero a lista de ônibus ordenada?
  • 78. public class PontoDeOnibus { private String nome; private Coordenada localizacao; Codar mais private ArrayList<Onibus> onibuses; um pouquinho! public PontoDeOnibus(String nome, // ... Coordenada localizacao) { this.onibuses = new ArrayList<Onibus>(); } // getters // adiciona e passaOnibus }
  • 79. Comparator<Onibus> public class OrdenadoPorLinha implements Comparator<Onibus>{ @Override public int compare(Onibus o1, Onibus o2) { return o1.getLinha().compareTo(o2.getLinha()); } }
  • 80. Comparator<Onibus> ...lections.sort(onibuses, new Comparator<Onibus>{ @Override public int compare(Onibus o1, Onibus o2) { return o1.getLinha().compareTo(o2.getLinha()); } }); nô ni ma ss ea Cla
  • 81. Cool!
  • 82. Cool! im ! ra s A go
  • 83.
  • 84. Entendendo melhor as Collections Cecilia Fernandes @cecifernandes github.com/ceci