java用Comparable和Comparator接口进行排序

时间:2021-12-26 02:50:45

有时候,我们需要按照某些属性或规则对对象进行排序。 排序的方法有多种,可使用javascript的客户端UI排序、也可使用复杂算法的服务器端排序,有时也在数据库中排序。

如果您一次没有数百万的排序记录,建议考虑“Comparable和Comparator”实现排序。下面就带大家一起看看如何使用Comparable

目录

  • 定义Employee类来对其进行排序

  • 实现Comparable接口

  • 使用Collections.sort()方法对ArrayList进行排序

  • 在Java8中使用比较器

定义Employee类来对其进行排序

我们的员工类是普通的类,有四个字段:id,firstName,lastName和age。

java用Comparable和Comparator接口进行排序

实现Comparable接口

Comparable接口提供了一个方法compareTo(T o)来实现任何类,以便可以比较该类的两个实例。 方法签名为:

public int compareTo(T o);

要比较两个实例,一个是实例本身,将调用compareTo方法,另一个作为参数o传递。让我们看看Employee类将如何实现Comparable接口。

java用Comparable和Comparator接口进行排序

在我们的例子中,排序员工列表的默认方式是按照他们的身份。 不管怎样,您的默认排序顺序是在compare()方法中使用。

在实现的compare()方法中,我们简单地返回了两个实例的员工ID的差异。 两个相等的员工ID将返回零,表示相同的对象。

使用Collections.sort()方法对ArrayList进行排序

让我们来测试我们的compare()方法。

java用Comparable和Comparator接口进行排序

在上述程序中,第一个打印语句打印未分配的员工列表,在第二个打印语句中,员工按照员工ID进行排序。

在Java8中使用比较器

java8中使用比较器比以前更容易。 看个例子一目了然:

java用Comparable和Comparator接口进行排序