Me gustaría saber qué significa cuando javadocs para TreeSet dice 'Esta clase implementa la interfaz Set, respaldada por una instancia de TreeMap'? En el ejemplo siguiente, no he implementado el método Hashcode y todavía está funcionando según las expectativas, es decir, puede ordenar los objetos. Tenga en cuenta que no he implementado intencionalmente la implementación Equals consistente para verificar el comportamiento de TreeSet.TreeSet internamente usa TreeMap, entonces ¿es necesario implementar el método Hashcode cuando usa Treeset
import java.util.TreeSet;
public class ComparisonLogic implements Comparable<ComparisonLogic>{
String field1;
String field2;
public String toString(){
return field1+" "+field2;
}
ComparisonLogic(String field1,String field2){
this.field1= field1;
this.field2= field2;
}
public boolean equal(Object arg0){
ComparisonLogic obj = (ComparisonLogic) arg0;
if(this.field1.equals(obj.field1))
return true;
else
return false;
}
public int compareTo(ComparisonLogic arg0){
ComparisonLogic obj = (ComparisonLogic) arg0;
return this.field2.compareToIgnoreCase(obj.field2);
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ComparisonLogic x = new ComparisonLogic("Tom", "jon");
ComparisonLogic y = new ComparisonLogic("Tom", "Ben");
ComparisonLogic z = new ComparisonLogic("Tom", "Wik");
TreeSet<ComparisonLogic> set = new TreeSet<ComparisonLogic>();
set.add(x);
set.add(y);
set.add(z);
System.out.println(set);
}
}
Este ejemplo imprime [Tom Ben, Tom jon, Tom Wik] .Así es la clasificación basada en el método compareTo y hashCode() método se parece insignificante en este scenario.However, TreeSet está respaldado por TreeMap, tan internamente si se usa TreeMap para clasificar, ¿cómo se compara el objeto con TreeMap?
He editado la pregunta para darle más información. – Metalhead
No se necesita más información - ¡prueba lo que sugerí y verás lo que quiero decir! – Russell
Lo arruiné. La sintaxis de mi método igual es incorrecta. Utilicé igual() :( – Metalhead