使用嵌套在另一个类中的类中定义的比较器实现Collections.sort

时间:2017-12-03 03:57:25

标签: java collections comparator inner-classes

我有一个特定的课程,我们称之为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是我项目的主类,并且有一个名为entries的ClassXs的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));

我很难过。有人可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

要了解正在发生的事情,请查看classXComparator

的声明
public static Comparator<ClassX> classXComparator = <something>

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

Collections.sort(entries, ClassX.classXComparator);