如何使用 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 次瀏覽

開啟您的事業

透過完成課程獲得認證

開始學習
廣告