在 Java 中對列表進行排序

Lovey Arora 2023年10月12日
  1. 在 Java 中使用 Collections.sort() 方法對列表進行排序
  2. 在 Java 中使用 Collections.reverseorder() 方法對列表進行排序
  3. 在 Java 中使用 Stream.sorted() 方法對列表進行排序
  4. 在 Java 中使用 Comparator.naturalOrder() 方法對 ArrayList 進行排序
在 Java 中對列表進行排序

列表是一個有序集合,可以以任何順序儲存專案。我們可以將傳統演算法應用於列表。

本教程將演示如何使用不同的函式在 Java 中對列表進行排序。

在 Java 中使用 Collections.sort() 方法對列表進行排序

我們可以使用 Collection 類中的 sort() 函式對列表進行排序。我們可以使用列表物件,它會修改元素的順序。它按升序對列表進行排序。

例如,

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

public class Main {
  public static void main(String[] args) {
    List<Integer> slist = Arrays.asList(4, 5, 1, 2, 8, 9, 6);
    Collections.sort(slist);
    System.out.println("After Sorting: " + slist);
  }
}

輸出:

After Sorting: [1, 2, 4, 5, 6, 8, 9]

我們可以看到,在上面的程式碼中,原始列表被修改並按適當的順序排序。

注意列表中應該有相同型別的元素;否則,它將丟擲 CLassCastException

在 Java 中使用 Collections.reverseorder() 方法對列表進行排序

我們使用 Collections.reverseorder() 方法按降序對 ArrayList 進行排序。我們不直接使用這種方法。首先使用 Collections.sort() 方法進行升序排序,然後使用 Collections.reverseorder() 方法進行降序排序。

請參考下面的程式碼。

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

public class Main {
  public static void main(String[] args) {
    List<Integer> slist = Arrays.asList(4, 5, 1, 2, 8, 9, 6);
    Collections.sort(slist, Collections.reverseOrder());
    System.out.println("After Sorting: " + slist);
  }
}

輸出:

After Sorting: [9, 8, 6, 5, 4, 2, 1]

我們在上面的程式碼中建立了一個列表,然後使用 Collections.sort() 方法對其進行排序。然後使用 Collections.reverseorder() 方法按降序對其進行排序。

在 Java 中使用 Stream.sorted() 方法對列表進行排序

sorted() 函式在 java.util 包 中的 Stream 介面中定義。通過使用此方法,列表按升序排序。如果列表中的元素不是同一型別,則丟擲 java.lang.ClassCastEcxeption

在這裡,我們將使用 stream() 函式來管理列表中元素的集合,collect() 將接收和儲存元素,而 tolist() 函式將返回已排序的最終列表命令。

例如,

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

public class Main {
  public static void main(String[] args) {
    List<Integer> slist = Arrays.asList(4, 5, 1, 2, 8, 9, 6);
    List<Integer> sortedList = slist.stream().sorted().collect(Collectors.toList());
    System.out.println("After Sorting: " + sortedList);
  }
}

輸出:

After Sorting: [1, 2, 4, 5, 6, 8, 9]

請注意,在上面的示例中建立了一個新列表。

在 Java 中使用 Comparator.naturalOrder() 方法對 ArrayList 進行排序

Java 中的 Comparator 介面可以根據所需的資料成員對使用者建立的類的物件進行排序。我們也可以使用它對列表進行排序。

naturalOrder() 函式將按升序對元素進行排序。

請參考下面給出的程式碼。

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

public class Main {
  public static void main(String[] args) {
    List<Integer> slist = Arrays.asList(4, 5, 1, 2, 8, 9, 6);
    slist.sort(Comparator.naturalOrder());
    System.out.println("After Sorting: " + slist);
  }
}

輸出:

After Sorting: [1, 2, 4, 5, 6, 8, 9]

使用此方法將空元素排在頂部。對於字母表,首先對以大寫字母開頭的單詞進行排序,然後以小寫字母開頭的單詞按升序排序。

我們可以使用前面討論的 reverseOrder() 函式按降序排序。

例如,

import java.util.*;
import java.util.stream.*;
public class Main {
  public static void main(String[] args) {
    List<Integer> slist = Arrays.asList(4, 5, 1, 2, 8, 9, 6);
    slist.sort(Comparator.reverseOrder());
    System.out.println("After Sorting: " + slist);
  }
}

輸出:

After Sorting: [9, 8, 6, 5, 4, 2, 1]

相關文章 - Java List