在 Java 中對列表進行排序
-
在 Java 中使用
Collections.sort()
方法對列表進行排序 -
在 Java 中使用
Collections.reverseorder()
方法對列表進行排序 -
在 Java 中使用
Stream.sorted()
方法對列表進行排序 -
在 Java 中使用
Comparator.naturalOrder()
方法對 ArrayList 進行排序
列表是一個有序集合,可以以任何順序儲存專案。我們可以將傳統演算法應用於列表。
本教程將演示如何使用不同的函式在 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]