有时候,我们需要按照某些属性或规则对对象进行排序。 排序的方法有多种,可使用javascript的客户端UI排序、也可使用复杂算法的服务器端排序,有时也在数据库中排序。
如果您一次没有数百万的排序记录,建议考虑“Comparable和Comparator”实现排序。下面就带大家一起看看如何使用Comparable
目录
定义Employee类来对其进行排序
实现Comparable接口
使用Collections.sort()方法对ArrayList进行排序
- 在Java8中使用比较器
定义Employee类来对其进行排序
我们的员工类是普通的类,有四个字段:id,firstName,lastName和age。
实现Comparable接口
Comparable接口提供了一个方法compareTo(T o)来实现任何类,以便可以比较该类的两个实例。 方法签名为:
public int compareTo(T o);
要比较两个实例,一个是实例本身,将调用compareTo方法,另一个作为参数o传递。让我们看看Employee类将如何实现Comparable接口。
在我们的例子中,排序员工列表的默认方式是按照他们的身份。 不管怎样,您的默认排序顺序是在compare()方法中使用。
在实现的compare()方法中,我们简单地返回了两个实例的员工ID的差异。 两个相等的员工ID将返回零,表示相同的对象。
使用Collections.sort()方法对ArrayList进行排序
让我们来测试我们的compare()方法。
在上述程序中,第一个打印语句打印未分配的员工列表,在第二个打印语句中,员工按照员工ID进行排序。
在Java8中使用比较器
java8中使用比较器比以前更容易。 看个例子一目了然: