当前位置: 首页 > 知识库问答 >
问题:

在java Collection中哪里需要使用collections.sort()以及collection和comparator接口?

穆飞星
2023-03-14

我在一些文章中对集合有了一些了解。
但是我搞不清楚哪里应该实现collections.sort()方法,哪里需要使用可比接口(compareTo()和比较器接口(compare())。

比较接口用于比较这个和另一个参考对象,而比较器用于比较两个对象

我想知道具体哪种情况需要使用的方法?

共有1个答案

呼延承平
2023-03-14

不应该实现collections.sort();这个方法是Java内置的。调用该方法而不提供比较器,如果它是可比的,则按自然顺序进行排序。否则,提供比较器来对比较器进行排序。

您应该让该类实现carable并提供compareto方法,如果该类具有自然顺序,如carableJavadocs中所示。例如integerdouble,它们肯定有一个自然的数学顺序。

当无法使对象的类对进行可比排序时,或者当您希望呈现一种替代自然排序的排序时,或者当您希望在没有自然排序时强加一种排序时,应创建一个实现comparator的类。一个例子是颠倒自然顺序(例如,从大到小降序排序)。另一个示例是具有多个字段的数据对象,您希望对多个字段进行排序,例如,具有firstnamelastnameperson对象:您可以有一个comparator首先对lastname进行排序,另一个code>firstname首先对firstname进行排序。

 类似资料:
  • 这更多的是一个建筑问题,也可能是一个观点问题。 许多Android lib在API中都有反应性方法。例如,,Volley有一个很好的将其放入,并且在回调中可以处理响应。 或者在中,也有一个异步调用,用于在给定的ImageView中加载图片。 所以我的问题是,Android中对RXJava的巨大需求在哪里?RXJava在哪些方面是必不可少的?

  • 问题内容: 我是Angular 4的新手,所以谁能解释在Angular 4中的使用方式和位置? 实际上,我想从父组件覆盖子组件的某些CSS属性。此外,它在IE11上受支持吗? 问题答案: 通常, 可使用组合器将样式强制降低到 。这个选择器有一个别名>>>,现在还有另一个叫做:: ng-deep的别名。 由于 已弃用,建议使用 例如: 和 它将应用于子组件

  • 问题内容: 我正在阅读一些有关Java中异常处理的内容,以便能够编写更好的代码。好吧,我承认,我有罪。我使用了太多try-catch {}块,在捕获中使用了它,甚至没有使用适当的记录器(实际上是和被重定向到,因此生成了日志)。但是,经过几个小时的阅读,我发现自己在一个陌生的地方:未知。如果异常被设计为传递有关异常流状态的信息,那么人们如何知道WHERE是使用该信息执行操作的适当级别? 例如,当发生

  • 我有一个Employee类,它有如下3个字段。 为此,我希望根据员工姓名(empName)排序,如果多个员工的姓名相同,则根据员工id(empId)排序。 为此,我编写了一个自定义比较器,使用java.util.比较器如下所示。 我已经创建了8个Employee对象并添加到ArrayList中,如下所示。 并使用上述比较器对列表进行如下排序。 它工作得非常好。但这可以使用类似的方法来完成,如下所示

  • 问题内容: 我们应该如何以及在何处使用静态修饰符: 1.领域和 2.方法? 对于例如在类中,字段的方法,如ABS(),ATAN(),COS()等是静态的,即它们可以作为被访问: 但是,为什么这是个好习惯呢? 说,我不是保持静态,而是创建类的对象并访问它,无论如何,我都会得到警告,您正在尝试以非静态方式访问静态方法(如所指出的那样) @duffymo编写,而不是Math类)。 更新1: 因此,实用程

  • 问题内容: 我是数据库编程的新手,我想知道索引的负面影响是什么?据我了解,索引加快了必须在数据库中搜索特定值(例如SELECT)的操作。 考虑以下示例: 对于table (在column上具有索引),操作: 作为索引的结果将更快。 我的问题是:使用索引有什么弊端?如果索引只是给我们带来好处(提高性能),为什么不将它们设置为默认值呢? 问题答案: 好吧,您可能可以填写有关索引的书,但总之,在创建索引