javadocs forTreeSet
が言うとき、それが何を意味するのか知りたい
このクラスは、TreeMap インスタンスに裏打ちされた Set インターフェイスを実装していますか?
以下の例では、メソッドを実装していませんが、Hashcode
期待どおりに動作しています。つまり、オブジェクトを並べ替えることができます。Equals
動作を確認するために、意図的に一貫した実装を実装していないことに注意してください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);
}
}
この例では、 が出力され[Tom Ben, Tom jon, Tom Wik]
ます。compareTo
したがって、メソッドに基づいてソートされておりhashcode()
、このシナリオではメソッドは重要ではないように見えます。ただし、Treeset
TreeMap でサポートされているため、内部的にソートに使用されている場合、オブジェクトのハッシュはTreeMap
どのようになっていますか?TreeMap