2017-12-03 8 views
1

私は特定のクラスを持っています。 ClassXは簡単な小さなクラスです。データメンバ、コンストラクタ、ネストされたクラス(それほど簡単ではない)を持っています。ネストされたクラスは、コンパレータを定義するための、具体的であり、このように書かれている:他のクラスにネストされたクラスで定義されたコンパレータを使用してCollections.sortを実装します。

public static Comparator<ClassX> classXComparator = new Comparator<ClassX>() 
{ 
    public int compare(ClassX x1, ClassX x2) 
    { 
     //code that compares two data members and returns -1 for x2>x1, 1 for x1>x2, 
     //0 for x1 = x2 
    } 
} 

私はまた別のクラスを持っている、のにClassAそれを呼びましょう。 ClassAは私のプロジェクトのメインクラスであり、ClassXのArrayListを持っています。私は、ItemsでCollections.sort()を呼び出したいと思います。しかし、私はちょうど方法を理解することはできません。私が試したもののリストが含まれています:私は困惑

  • Collections.sort(entries, ClassX.classXComparator.compare(ClassX, ClassX));
  • Collections.sort(entries, ClassX.classXComparator.compare(ClassX a, ClassX b));
  • Collections.sort(entries, classXComparator.compare());
  • Collections.sort(entries, ClassX.compare(ClassX, ClassX));

。誰かが私を助けてくれますか?

答えて

1

classXComparatorの宣言を見て何が起こっているのかを理解するために:

public static Comparator<ClassX> classXComparator = <something> 

これは正確にsort(...)の第2引数のタイプであるタイプComparator<ClassX>static分野としてclassXComparatorを宣言します。したがって、sortの呼び出しは、次のようになります。

Collections.sort(entries, ClassX.classXComparator); 
関連する問題