Collections Sort in Java 8

2025年3月28日 | 阅读 5 分钟

在 Java 8 中对 Collections 进行排序时,Lambda 表达式Collections 接口起着重要作用。我们可以通过多种方式使用 Java 8 Lambda 表达式对列表进行排序。但是 Collections 接口本身提供了一些排序方法,通过这些方法我们可以轻松地在 Java 8 中对 collection 对象进行排序。

可以使用 streamComparatorCollections 接口提供的几种排序方法来对列表进行排序。在本节中,我们将讨论 Collections 接口提供的方法。如果您想学习任何类提供的所有排序方法,请点击这里

Collections 接口提供以下两种排序方法来对列表的元素进行排序:

  1. sort()
  2. reverseOrder()
Collections Sort in Java 8

1) sort()

Collections.sort() 方法在 java.util.Collections 类中可用。Collections.sort() 方法帮助我们对 Collections 指定列表中的元素进行排序。默认情况下,sort() 方法按升序排序元素。

Collections 接口的 sort() 方法的工作方式类似于 Arrays 接口。Collections 接口的 sort 方法不仅可以排序列表,还可以排序集合中可用的链表、队列等,这使得 Collection 的 sort 方法比 Arrays 更好。

语法

参数

1) type

它定义了参数的类型。

2) list

它定义了我们需要使用此方法对其进行排序的列表。

让我们看一个例子来理解 Java 8 中如何对列表进行排序:

SortExample.java

输出

Collections Sort in Java 8

解释

在上面的代码中,我们创建了一个 String 类型的 ArrayList 和一个 Integer 类型的 LinkedList。这两个列表都包含一些随机顺序的值。我们首先打印两个列表,然后再执行排序,最后打印两个列表,其中已使用 Collections.sort() 方法执行了排序。

2) reverseOrder()

Collections.reverseOrder() 是一个返回 Comparator 的方法。生成的 Comparator 对对象的自然排序应用反序。Collections 提供两种不同类型的 Java reverseOrder() 方法,具体取决于参数。这些方法如下:

  1. Java Collections reverseOrder() 方法
  2. Java Collections reverseOrder(comp) 方法

Collections.reverseOrder()

Collections 的 reverseOrder() 方法用于派生 Comparator。生成的 Comparator 对对象的集合应用自然排序的反序。它实现了 comparable 接口。

语法

参数

它没有任何参数。

让我们看一个例子来理解 Java 8 中如何对列表进行排序:

ReverseOrderExample1.java

输出

Collections Sort in Java 8

解释

在上面的代码中,我们创建了一个 Integer 类型的链表并向其中添加了一些元素。添加元素后,我们打印该链表,然后使用 Collections sort() 和 reverseOrder() 方法对其进行排序。我们使用 reverseOrder() 方法执行降序排序。最后,我们打印已排序的链表。

Collections.reverseOrder(comp)

Collections 的 reverseOrder(comp) 方法用于派生 Comparator。生成的 Comparator 应用指定 Comparator 的反序。

语法

参数

comp

它定义了我们希望返回的 Comparator 反转或颠倒其排序顺序的 Comparator。

让我们看一个例子来理解在 Java 8 中如何使用 reverseOrder(comp) 对列表进行排序:

ReverseOrderExample2.java

输出

Collections Sort in Java 8

解释

在上面的代码中,我们创建了一个 Employee 类,它具有 emp_id、name 和 address 属性。在构造函数中,我们为这些属性设置了值。toString() 方法返回员工的详细信息,以便在 main 方法中打印。

我们创建了一个实现 Comparator 接口的 Comparator 类 SortByEmpId。该接口有一个抽象方法,即 compare(),我们需要对其进行定义。因此,我们创建了一个 compare 方法,它返回 emp1 和 emp2 的 id 之间的差值。

在 main 类中,我们创建了一个包含四个员工详细信息的 ArrayList,并通过 for 循环打印它们。之后,我们使用 Collections 的 reverseOrder() 方法获取 Comparator,并使用该 Comparator 按员工 ID 的降序对员工进行排序。最后,我们打印已排序的员工 ArrayList。

结论

Collections 接口仅提供一个用于排序的方法,即 sort() 方法。它按升序排序。Collections 的 reverseOrder() 方法通过返回 Comparator 来帮助 sort() 方法执行降序排序。