java言語のTreeSetでは、その中に格納されているデータが自動的にソートされます.この概念は、データ構造の二叉ソートツリーと同様に、二叉ソートツリーを介してデータを格納し、中系列で遍歴して取り出すデータは、小さいものから大きいものまでです.
TreeSetに格納データの順序がである場合.
“C”,“A”,"B",“E”,“F”,“D” では、集合を巡回してデータを取り出すと、データの順序がA B C D Eになることがわかります.では、これはどのように実現されますか.は、基本的なデータ型についてである.IntegerやStringのように、データを追加すると、TreeSethはこのクラスのcompareToメソッドに従ってソートされます.この場合、追加の作業は必要ありません.データを保存するだけでいいです.しかし、実際のアプリケーションではそう簡単ではありません.compareToメソッドを実装していないクラス、例えば自分で定義したクラスが格納されている場合、集合はどのようにソートされますか? ここでは一般的に、格納されたデータがTreeSet=new TreeSet()である場合、2つの方法がある. メソッドStudentクラスのメンバー変数には学号、年齢、名前があります.学生クラスのimplements Comparatorインタフェースのメソッドcomparareまたはimplements Comparableインタフェースを書き換え、希望するソートルールを指定する必要があります.
メソッド2 TreeSet ts=new TreeSet(new Comparator() {
@Override
public int compare(student o1, student o2) {
int num=o1.age-o2.age;
int num2=num==0?o1.number-o2.number:num;
return num2;
}
});
TreeSetをインスタンス化する際、コンストラクタにおいて匿名の内部クラスによってその中のcompareメソッドを書き換え、その中で具体的なソートメソッドを指定し、メソッド2で指定する順序は先に年齢順にソートし、年齢が同じ場合に学号に従ってソートを行う.