ola Amigos do forum, estou com mais uma duvida que gostaria de compartilhar, vejam por favor o codigo abaixo:
import java.util.*;
class ComparatorCarro implements Comparator{
public int compare(Object o1, Object o2){
return ((Carro)o1).chassi.compareTo(((Carro)o2).chassi);
}
}
class Carro{
Integer chassi;
String modelo;
Carro(int chassi, String modelo){
this.chassi = chassi;
this.modelo = modelo;
}
public String toString(){
return "Chassi: " + chassi + "/Modelo: " + modelo;
}
}
public class Teste {
public static void main(String[] args) {
TreeSet s = new TreeSet(new ComparatorCarro());
s.add(new Carro(123,"Popular"));
s.add(new Carro(124,"Luxo"));
s.add(new Carro(123,"Medio"));
s.add(new Carro(129,"Super"));
s.add(new Carro(1234,"Mega"));
s.add(new Carro(150,"Luxuoso"));
System.out.println(s);
}
}
A classificacao e feita normalmente, o codigo compila e executa, porem a minha duvida e: Por que tenho que colocar no codigo os metodos equals e hashCode se o resultado e o mesmo? Todos os exemplos do livro usam estes metodos mas nao entendo exatamente porque, conto com a ajuda dos amigos, obrigado.
Cara, o que você falou eu acho que tem a ver sim, talvez em pesquisas em sistemas maiores ele seja melhor utilizado, é que questões de exame de certificação na verdade são meio esquisitas e fazem a gente pensar em porque usaria tal recurso. Mas valeu pela sua ajuda, vou manter aberto o tópico pra ver as demais respostas, abraço.
a) Implemente equals e hashCode se você pretende inserir um objeto dessa classe em alguma coleção como um HashMap, Hashtable, HashSet, LinkedHashSet, LinkedHashMap, ConcurrentHashMap etc.
b) Use um Comparator, ou então implemente a interface Comparable, se você pretende inserir um objeto dessa classe em alguma coleção como TreeSet, TreeMap, ConcurrentSkipListMap, ConcurrentSkipListSet e outras que exigem elementos ordenados.
Agora ficou mais claro, estou testando muito as possibilidades neste assunto pra principalmente entender o porque das coisas, afinal pra trabalhar acho que isso é o mais importante né, obrigado pela ajuda. Abraço.