Vorrei sapere cosa significa quando javadocs per TreeSet dice "Questa classe implementa l'interfaccia Set, supportata da un'istanza TreeMap"? Nell'esempio seguente, non ho implementato il metodo Hashcode e ancora funziona come da aspettativa, è in grado di ordinare gli oggetti. Si noti che non ho implementato intenzionalmente l'implementazione Equals coerente per verificare il comportamento TreeSet.TreeSet utilizza internamente TreeMap, quindi è necessario implementare il metodo Hashcode quando si utilizza 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);
}
}
questo esempio stampe [Tom Ben, Tom jon, Tom Wik] .Così si ordinamento basa sul metodo compareTo e hashCode() metodo sembra insignificante in questo scenario.However, TreeSet è sostenuta da TreeMap, così internamente se TreeMap è usato per l'ordinamento, in che modo treeMap esegue l'hashing dell'oggetto?
Ho modificato la domanda per darvi maggiori informazioni. – Metalhead
Non servono più informazioni - prova quello che ho suggerito e vedrai cosa intendo! – Russell
Ho incasinato. La sintassi del metodo equals my non è corretta. Ho usato equal() :( – Metalhead