更新時間:2022-11-07 11:13:27 來源:動力節點 瀏覽1806次
我們在學習 Java 的過程中肯定會遇到對數組進行升序或降序等排序問題,本節主要介紹如何實現 Java 數組的升序和降序。Java 語言使用 Arrays 類提供的 sort() 方法來對數組進行排序。
使用 java.util.Arrays 類中的 sort() 方法對數組進行升序分為以下兩步:
導入 java.util.Arrays 包。
使用 Arrays.sort(數組名) 語法對數組進行排序,排序規則是從小到大,即升序。
假設在數組 scores 中存放了 5 名學生的成績,現在要實現從低到高排列的功能。在這里使用 Arrays.sort() 方法來實現,具體代碼如下:
public static void main(String[] args) {
// 定義含有5個元素的數組
double[] scores = new double[] { 78, 45, 85, 97, 87 };
System.out.println("排序前數組內容如下:");
// 對scores數組進行循環遍歷
for (int i = 0; i < scores.length; i++) {
System.out.print(scores[i] + "\t");
}
System.out.println("\n排序后的數組內容如下:");
// 對數組進行排序
Arrays.sort(scores);
// 遍歷排序后的數組
for (int j = 0; j < scores.length; j++) {
System.out.print(scores[j] + "\t");
}
}
如上述代碼所示,要對一個數組進行升序排列,只需要調用 Arrays.sort() 方法即可。運行后的輸出結果如下所示。
排序前數組內容如下:
78.0 45.0 85.0 97.0 87.0
排序后的數組內容如下:
45.0 78.0 85.0 87.0 97.0
在 Java 語言中使用 sort 實現降序有兩種方法,簡單了解即可。
1.利用 Collections.reverseOrder() 方法(Collections 是一個Java包裝類。
public static void main(String[] args) {
Integer[] a = { 9, 8, 7, 2, 3, 4, 1, 0, 6, 5 }; // 數組類型為Integer
Arrays.sort(a, Collections.reverseOrder());
for (int arr : a) {
System.out.print(arr + " ");
}
}
輸出結果如下:
9 8 7 6 5 4 3 2 1 0
2.實現 Comparator 接口的復寫 compare() 方法,代碼如下:
public class Test {
public static void main(String[] args) {
/*
* 注意,要想改變默認的排列順序,不能使用基本類型(int,double,char)而要使用它們對應的類
*/
Integer[] a = { 9, 8, 7, 2, 3, 4, 1, 0, 6, 5 };
// 定義一個自定義類MyComparator的對象
Comparator cmp = new MyComparator();
Arrays.sort(a, cmp);
for (int arr : a) {
System.out.print(arr + " ");
}
}
}
// 實現Comparator接口
class MyComparator implements Comparator<Integer> {
@Override
public int compare(Integer o1, Integer o2) {
/*
* 如果o1小于o2,我們就返回正值,如果o1大于o2我們就返回負值, 這樣顛倒一下,就可以實現降序排序了,反之即可自定義升序排序了
*/
return o2 - o1;
}
}
輸出結果如下所示。
9 8 7 6 5 4 3 2 1 0
注意:使用以上兩種方法時,數組必須是包裝類型,否則會編譯不通過。
在 Java 中實現數組排序的方式很多,除了利用以上的幾種方法外,還可以編寫自定義方法來實現自己的排序算法,有興趣的讀者可以嘗試編寫。
對數組的排序:
//對數組排序
public void arraySort(){
int[] arr = {1,4,6,333,8,2};
Arrays.sort(arr);//使用java.util.Arrays對象的sort方法
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
對集合的排序:
//對list升序排序
public void listSort1(){
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(55);
list.add(9);
list.add(0);
list.add(2);
Collections.sort(list);//使用Collections的sort方法
for(int a :list){
System.out.println(a);
}
}
//對list降序排序
public void listSort2(){
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(55);
list.add(9);
list.add(0);
list.add(2);
Collections.sort(list, new Comparator<Integer>() {
public int compare(Integer o1, Integer o2) {
return o2 - o1;
}
});//使用Collections的sort方法,并且重寫compare方法
for(int a :list){
System.out.println(a);
}
}
以上就是關于“Java sort數組排序詳解”的介紹,大家如果想了解更多相關知識,不妨來關注一下本站的Java基礎教程,里面還有更豐富的知識等著大家去學習,希望對大家能夠有所幫助哦。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習