How to sort objects through the name attribute? I'm implementing the Comparator interface.
I gave a small example.
Let's go to the codes:
file: Person.java
import java.util.ArrayList;
import java.util.List;
public abstract class Pessoa {
protected String nome;
protected int telefone;
protected int matricula;
private static int contadorMatricula;
private static int atribuirMatricula() {
Pessoa.contadorMatricula++;
return Pessoa.contadorMatricula;
}
}
file: PersonPass.java
public class PessoaFisica extends Pessoa {
protected int cpf;
public PessoaFisica(String nome, int telefone, int cpf) {
this.nome=nome;
this.telefone=telefone;
this.cpf=cpf;
}
}
main: Main.java file
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Comparator;
public class Main implements Comparator<PessoaFisica> {
@Override
public int compare(PessoaFisica pessoa1, PessoaFisica pessoa2) {
return pessoa1.nome.compareTo(pessoa2.nome);
}
public static void main(String args[]) {
List pessoasFisicas = new ArrayList<>();
PessoaFisica pessoa1=new PessoaFisica("André Nascimento", 321, 654);
pessoasFisicas.add(pessoa1);
PessoaFisica pessoa2=new PessoaFisica("Tiago Santos", 123, 456);
pessoasFisicas.add(pessoa2);
}
}
How do I show to Collections.sort
what is to sort by name?
Note: I do not need to implement the Comparator interface, because the correct one is to instantiate and to implement at runtime, for example: new Comparator<PessoaFisica>();
But I'm doing the least ideal to facilitate my understanding.