是否可以在单个 class 中实现比较器?
Is it possible to implement comparator in single class?
通常我看到-要在 java 集合中实现比较器,我们需要 2 个 classes,一个 class 调用排序函数,第二个 class 实现比较器..我想知道有什么方法可以在单个 class 中实现整个比较器概念??
是的,您可以使用比较器而无需创建第二个 class。如果你想在一个 class 中使用比较器,你有 3 个选项。您可以 1. 创建一个内部 class。 2. 创建一个匿名 class,以及 3. (这是最好的方法)使用 lambda。使用 lambda 是创建可读代码的最佳方式。
所以在您的代码中,这应该有效:
al.sort((o1, o2) -> o1.name.compareTo(o2.name));
就这么简单。这是 Java 8 中的新功能,我很高兴他们添加了它。您的问题涉及 OOP 的缺点之一。有时,您不想传递对象,只想传递行为,这正是 lambda 所完成的。
通常我看到-要在 java 集合中实现比较器,我们需要 2 个 classes,一个 class 调用排序函数,第二个 class 实现比较器..我想知道有什么方法可以在单个 class 中实现整个比较器概念??
是的,您可以使用比较器而无需创建第二个 class。如果你想在一个 class 中使用比较器,你有 3 个选项。您可以 1. 创建一个内部 class。 2. 创建一个匿名 class,以及 3. (这是最好的方法)使用 lambda。使用 lambda 是创建可读代码的最佳方式。
所以在您的代码中,这应该有效:
al.sort((o1, o2) -> o1.name.compareTo(o2.name));
就这么简单。这是 Java 8 中的新功能,我很高兴他们添加了它。您的问题涉及 OOP 的缺点之一。有时,您不想传递对象,只想传递行为,这正是 lambda 所完成的。