【问题标题】:Implementing Collections.sort using a comparator defined in a class nested in another class使用嵌套在另一个类中的类中定义的比较器实现 Collections.sort
【发布时间】:2017-12-03 03:57:24
【问题描述】:

我有一个特殊的类,我们称它为 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 是我项目的主类,并且有一个 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));

我被难住了。有人可以帮帮我吗?

【问题讨论】:

    标签: java collections comparator inner-classes


    【解决方案1】:

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

    public static Comparator<ClassX> classXComparator = <something>
    

    这将classXComparator 声明为static 类型的Comparator&lt;ClassX&gt; 字段,这正是sort(...) 的第二个参数的类型。所以sort的调用应该是这样的:

    Collections.sort(entries, ClassX.classXComparator);
    

    【讨论】:

      猜你喜欢
      • 2014-12-01
      • 2020-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多