Pessoal,
pesquisei mas não consegui uma resposta…
Eu tenho a minha Classe AgenciaAutomoveis classificada por Modelo da seguinte forma…
import java.util.Comparator;
import java.util.Map;
import java.util.TreeMap;
public class TreeMapClassificada {
public static void main(String [] args){
AgenciaAutomoveis auto1 = new AgenciaAutomoveis(1999, "Gol");
AgenciaAutomoveis auto2 = new AgenciaAutomoveis(2007, "Palio");
AgenciaAutomoveis auto3 = new AgenciaAutomoveis(2009, "EcoSport");
AgenciaAutomoveis auto4 = new AgenciaAutomoveis(1992, "Uno");
ComparatorAgenciaByNomeCarro compare = new ComparatorAgenciaByNomeCarro();
Map mapa = new TreeMap(compare);
mapa.put(auto1, 7500);
mapa.put(auto2, 15000);
mapa.put(auto3, 22000);
mapa.put(auto4, 2300);
System.out.println(mapa);
}
}
class AgenciaAutomoveis{
Integer ano;
String nomeCarro;
AgenciaAutomoveis(Integer ano, String modelo){
super();
this.ano = ano;
this.nomeCarro = modelo;
}
public String toString(){
return "Ano: " + ano + " " + "Modelo: " + nomeCarro + " ";
}
}
class ComparatorAgenciaByNomeCarro implements Comparator <AgenciaAutomoveis>{
public int compare(AgenciaAutomoveis agencia1, AgenciaAutomoveis agencia2){
return agencia1.nomeCarro.compareTo(agencia2.nomeCarro);
}
}
O código imprime a classificação por nome do Carro: {Ano: 2009 Modelo: EcoSport =22000, Ano: 1999 Modelo: Gol =7500, Ano: 2007 Modelo: Palio =15000, Ano: 1992 Modelo: Uno =2300}
Pois bem…
Mas e se eu quiser que a classificação seja feita pelo Ano, é possível?
Se eu utilizar um List, eu consigo classificar através de Collections.sort(), passando a minha classe e o Comparator desejado.
Mas no caso do TreeMap este Comparator é passado no momento da criação do objeto, ai fiquei com esta dúvida.
Sinceramente acho que não tem como, só se tiver alguma gambiarra pois o objeto foi criado pra ser classificado dessa maneira.
Alguém pode ajudar?
Grato!!!