当前位置: 首页 > 面试题库 >

如何仅在一堂课中制作两种可比较的方法?

公良同
2023-03-14
问题内容

我有一类,我已经按一个属性对其进行了排序。现在,我需要做另一件事,需要创建另一种对数据进行排序的方式。我该如何做,所以我可以在两种方法之间进行选择。我知道的唯一命令是Collections.sort,它将从我要比较其数据的类中选择方法compareTo。

可能吗?


问题答案:

您需要执行的是自定义Comparator。然后使用:

Collections.sort(yourList, new CustomComparator<YourClass>());

具体来说,您可以编写:(这将创建一个实现的匿名类Comparator。)

Collections.sort(yourList, new Comparator<YourClass>(){
    public int compare(YourClass one, YourClass two) {
        // compare using whichever properties of ListType you need
    }
});

如果您愿意,可以将它们构建到您的班级中:

class YourClass {

    static Comparator<YourClass> getAttribute1Comparator() {
        return new Comparator<YourClass>() {
            // compare using attribute 1
        };
    }

    static Comparator<YourClass> getAttribute2Comparator() {
        return new Comparator<YourClass>() {
            // compare using attribute 2
        };
    }
}

可以这样使用:

Collections.sort(yourList, YourClass.getAttribute2Comparator());


 类似资料:
  • std::any没有运算符== 是我错过了一些明显的东西还是我需要真正的谋生? 有没有一些简单的方法来提供运营商? https://godbolt.org/z/rdowrcnts

  • 问题内容: 我们有两个可选的NSArrays。目的是检查它们是否相等。我的解决方案是 我觉得这太冗长了。它应该以更简洁和易读的方式实现。有谁有更好的解决方案? 问题答案: 这很简单: 正是您想要的。 为什么行得通? 这是比较可选项的运算符 并给出两个操作数是否为,或者两个操作数均为非nil且未包装的操作数相等。 也继承符合,并使用将该方法与进行比较,该方法按on 实现。因此 给出与以下结果相同的结

  • 我还研究了如何使用Google Apps脚本通过Google Clasonal API使用Course.CourseWork.list列出作业,但当我运行答案中的代码时,我的日志显示正在加载,但似乎从未完成。

  • 我正在开发一个语音信息应用程序,我需要比较两个声音, 通过录制语音向应用程序注册 通过录制语音向另一用户发送语音信息,但首先需要将此语音与配置文件中录制的语音进行比较 出于安全目的,需要知道记录的消息是否来自特定用户。 我试过了: 比较Android中的两种声音 http://www . dream incode . net/forums/topic/274280-using-FFT-to-com

  • 问题内容: 两个日期比较,但时间比较不正确。这是我的密码 我该如何比较两次。在数据库中的日期和时间字段不同。请帮助我。 问题答案:

  • 我正在为Java8证书做准备,下面的内容让我有点困惑,也许有人能帮我?在这个例子中,一个Squirrel类被建模。它有一个名称和一个权重。现在你可以创建一个比较器类来使用这两个字段对它进行排序。所以首先按名称排序,然后按权重排序。类似于这样: 到现在为止,一直都还不错。。但接下来是令人困惑的部分。在代码示例下面,它们声明您可以使用方法链接在一行中编写此代码。也许我误解了,但当我将比较部分和then