Colecoes

Comparator

Ampliando as formas de comparação

Java Collections - Comparator

Aprenderemos anteriormente que um objeto para ser comparado ele precisa ser comparável (implementar Comparable). Mas e quando este mesmo objeto tiver a necessidade de ser comparado/classificado de maneiras diferentes e preferencialmente dinamicamente?

Vamos imaginar que os mesmos objetos originados da mesma classe Pessoa necessitem ser classificados hora pelo seu nome outra hora pela idade?

ℹ️ Informação
Este é o fator para escolher que sua classe implemente Comparable ou criar seus inúmeros Comparators.
public class Pessoa {
    String nome;
    Integer idade;
    public Pessoa(String nome, Integer idade) {
        this.nome = nome;
        this.idade = idade;
    }
    public String getNome() {
        return nome;
    }
    public Integer getIdade() {
        return idade;
    }
    @Override
    public String toString() {
        return "Pessoa{" +
                "nome='" + nome + '\'' +
                ", idade=" + idade +
                '}';
    }
}