【问题标题】:Is it possible to implement comparator in single class?是否可以在单个类中实现比较器?
【发布时间】:2017-03-30 14:41:19
【问题描述】:

一般我看到-要在 java 集合中实现比较器,我们需要 2 个类,一个类调用排序函数,第二个类实现比较器。我想知道有没有办法在单个类中实现整个比较器概念?

【问题讨论】:

  • 是的......
  • 你为什么不能简单地试试看??
  • 如果可能的话请给我一个例子..
  • 为什么要在一个类中创建?...两个类有什么问题
  • 总是在一个类中实现Comparator。然后,是的,你需要其他类来使用它——要么是你自己的,要么是 JDK 中的任何一个。也许如果您向我们展示了您认为需要实施的两件事的示例,并告诉我们为什么您不能摆脱不包含 implements Comparator 的那件事,我们可以提供更好的帮助。

标签: java class collections implementation comparator


【解决方案1】:

是的,您可以在不创建第二类的情况下使用比较器。如果您想在一类中使用比较器,您有 3 个选项。您可以 1. 创建一个内部类。 2.创建一个匿名类,并且 3.(这是最好的方法)使用 lambda。使用 lambda 是创建可读代码的最佳方式。

所以在你的代码中,这应该可以工作:

al.sort((o1, o2) -> o1.name.compareTo(o2.name));

就这么简单。这是 Java 8 中的新功能,我很高兴他们添加了这个。您的问题涉及 OOP 的缺点之一。有时,您不想传递对象,只传递行为,这就是 lambda 所完成的。

【讨论】:

    猜你喜欢
    • 2012-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-07
    • 2021-07-19
    • 2021-02-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多