我有一个特定的类,我们称它为ClassX。 ClassX是一个简单的小类。它有几个数据成员,一个构造函数和一个嵌套类(不那么简单)。嵌套类专门用于定义比较器,并以这种方式编写:

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是我的项目的主要类,并且具有一个称为Entry的ClassX的ArrayList。我想在条目上调用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));


我很困惑有人可以帮我吗?

最佳答案

要了解发生了什么,请查看classXComparator的声明:

public static Comparator<ClassX> classXComparator = <something>


这将classXComparator声明为类型为staticComparator<ClassX>字段,而该字段正是sort(...)的第二个参数的类型。因此,sort的调用应如下所示:

Collections.sort(entries, ClassX.classXComparator);

10-06 13:38