Tenha duas classes, uma Cliente e a outra Taxi.
A Classe Cliente tem como atributo nome e cpf, enquanto a Classe Taxi tem motorista e codigo.
Tenho uma terceira classe Chamada que tem como atributo Taxi taxi, Cliente cliente e codigo.
Na classe principal, gerei 3 objetos do tipo Chamada em uma ArrayList
Preciso fazer duas ordenações, uma em ordem alfabética do nome de cliente e outra do nome dos motoristas, mas estou com dificuldade de como fazer
Você pode usar um java.util.Comparator
. Assumindo que as classes são:
public class Cliente {
private String nome, cpf;
}
public class Taxi {
private String motorista, codigo;
}
public class Chamada {
private Cliente cliente;
private Taxi taxi;
private String codigo;
}
// todas com construtores, getters, setters, etc
Basta criar os Comparator
's de acordo com o critério desejado:
List<Chamada> chamadas = // cria a lista com as chamadas
// ordenar pelo nome do cliente
chamadas.sort(new Comparator<Chamada>() {
@Override
public int compare(Chamada c1, Chamada c2) {
return c1.getCliente().getNome().compareTo(c2.getCliente().getNome());
}
});
// ordenar pelo motorista do táxi
chamadas.sort(new Comparator<Chamada>() {
@Override
public int compare(Chamada c1, Chamada c2) {
return c1.getTaxi().getMotorista().compareTo(c2.getTaxi().getMotorista());
}
});
Como o nome e o motorista são strings, eu aproveitei o método compareTo
já existente, que faz a comparação entre elas. E dentro de cada Comparator
eu indico o campo que será usado para ordenar a lista: no primeiro caso é o nome do cliente, no segundo é o motorista do táxi.