如何使用 Java 中带有 Lambda 的 Stream API 对集合进行排序?


Stream API 是实现 Java 中函数式编程的有效方法。它通常与lambda 表达式结合使用,并提供执行数据操作操作(如分类过滤映射reduce等)的高效方法。

在以下示例中,我们可以使用Stream API对集合进行排序。它通过使用Comparator 接口的sorted() 方法提供排序逻辑。如果我们有两个 Comparator 接口实例,并且需要通过复合条件(按第一个比较器,然后按第二个比较器)进行排序,我们可以通过在第一个实例上调用thenComparing() 方法并传入第二个实例来使用这两个比较器。

示例

import java.util.*;
import java.util.stream.*;

public class LambdaSortCollectionTest {
   public static void main(String args[]) {
      Stream<Employee> emps = Stream.of(
         new Employee("Raja"),
         new Employee("Ramesh"),
         new Employee("Surya"),
         new Employee("Jai"),
         new Employee("Adithya"));
      Comparator<Employee> c1 = Comparator.comparing(e -> e.name.length());
      Comparator<Employee> c2 = (e1, e2) -> e1.name.compareTo(e2.name);

      List<Employee> list = emps.sorted(c1.thenComparing(c2)).collect(Collectors.toList());
      System.out.println(list);
   }
}

// Employee class
class Employee {
   public String name;
      public Employee(String n) {
         name = n;
      }
   @Override
   public String toString() {
      return name;
   }
}

输出

[Jai, Raja, Surya, Ramesh, Adithya]

更新时间:11-Jul-2020

435 次浏览

开启您的事业

通过完成课程获得认证

开始学习
广告
© . All rights reserved.