Giter VIP home page Giter VIP logo

Comments (2)

BrunoSenigalha avatar BrunoSenigalha commented on September 14, 2024 1

Muito obrigado @cami-la !
Ajudou bastante!

from collections-java-api-2023.

cami-la avatar cami-la commented on September 14, 2024

Ótima pergunta, @BrunoSenigalha.

Bora lá:

A interface Comparable serve para definir a ordem natural do objeto. Seguem exemplos de ordenação de objetos com as seguintes classes:

  • Classe String (Já implementa o Comparable e ordena naturalmente pela ordem alfabética)
    List<String> names = Arrays.asList("Camila", "Maria", "João", "Anna");
    Collections.sort(names);
    System.out.println(names);
    //resultado: [Anna, Camila, João, Maria]
  • Classe Integer (Já implementa o Comparablee ordena naturalmente pela ordem numérica)
    List<Integer> numbers = Arrays.asList(8, 50, 3, 5);
    Collections.sort(numbers);
    System.out.println(numbers);
    //resultado: [3, 5, 8, 50]
  • classe Pessoa
  1. Você implementou o Comparable e definiu através do metodo compareTo que a ordem natural dos objetos do tipo Pessoa será por idade.
  2. Como o atributo idade é um Integer, você terá definido que a ordenação desses objetos será pela ordem numérica das idades.
  3. Sendo assim, a classe Integer tem o método estático chamado compare Integer.compare() que vai fazer o papel de comparar cada elemento de dentro da Collection e saber qual é o menor, o maior e se são iguais. Assim, consegue ordenar uma sequência de números.
    @Override 
    public int compareTo(Pessoa pessoa) {
        return Integer.compare(idade, pessoa.getIdade()); //return Integer.compare(primeiro elemento a ser comparado, segundo elemento a ser comparado)
    }
  1. Vamos supor que a idade das pessoas dentro da lista sejam 8, 50, 3, 5.
  • Aí quando 8 é comparado com 50, o método compareTo de Integer retorna um valor negativo, indicando que 8 é menor que 50. Isso faz com que esses dois números sejam trocados de posição na lista, colocando o 8 antes do 50.
  • O processo de comparação e troca continua para os outros elementos na lista até que todos estejam na ordem correta.
  1. Beleza, agora que foi definido a ordem natural dos objetos do tipo Pessoa, agora você vai utilizar o método estático Collections.sort(pessoasPorIdade); que está recebendo uma lista que contém elementos do tipo Pessoa.
  2. Como o tipo Pessoa já tem a ordem natural por idade, agora é só "correr para o abraço" e sua lista está ordenada. (:
    public List<Pessoa> ordenarPorIdade() {
        List<Pessoa> pessoasPorIdade = new ArrayList<>(pessoaList); 
        Collections.sort(pessoasPorIdade); 
        return pessoasPorIdade; 
}

from collections-java-api-2023.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.