Boa tarde amigos, estou aqui mais uma vez precisando da ajuda daqueles que sabem mais que eu pra me tirar uma dúvida com um detalhe sobre o código abaixo:
class ComparatorCasa implements Comparator{
public int compare(Object o1, Object o2){
Casa c1 = (Casa)o1;
Casa c2 = (Casa)o2;
return c1.numQuartos - c2.numQuartos;
}
}
class Casa{
String cor;
int numQuartos;
public Casa(String cor, int numQuartos){
this.cor = cor;
this.numQuartos = numQuartos;
}
public String toString(){
return "Cor: " + cor + " Quartos: " + numQuartos;
}
public boolean equals(Object o){
if(((Casa)o).numQuartos == this.numQuartos)
return true;
else
return false;
}
public int hashCode(){
return numQuartos;
}
}
public class Programa37 {
public static void main(String[] args) {
Casa c1 = new Casa("Branca",2);//exibe
Casa c2 = new Casa("Verde",1);//exibe e descarta c4
Casa c3 = new Casa("Verde",3);//exibe
Casa c4 = new Casa("Amarela",1);//em um primeiro momento seria exibido
Casa c5 = new Casa("Azul",5);//exibe
ComparatorCasa cc = new ComparatorCasa();
TreeMap t = new TreeMap(cc);
t.put(c1, "Antonio");
t.put(c2, "Marta");//
t.put(c1, "Zelia");
//t.put(null, " T");Exceção NullPointer, chave não pode ser nula, compila.
t.put(c3, "Cesar");
t.put(c4, "Cleber");
t.put(c5, null);//valor pode ser nulo, compila e executa normalmente neste caso
System.out.print(t.keySet() + " " + t.values());
}
}
A saída desse código é essa:
[Cor: Verde Quartos: 1, Cor: Branca Quartos: 2, Cor: Verde Quartos: 3, Cor: Azul Quartos: 5] [Cleber, Zelia, Cesar, null]
Entendi que tenho que sobrescrever equals() e hashCode() pra eliminar duplicidades e se quiser realizar classificação dos elementos tenho que implementar ou a interface Comparator ou Comparable, a dúvida é talvez boba, mas acho que não custa perguntar, pra definir o que vai ser exibido o programa percorre o mapa de baixo para cima e quando encontra um elemento duplicado descarta o anterior? Agradeço desde já pela ajuda. Só um detalhe, não estou usando genéricos, por isso as conversões nos métodos compare() e equals().
