欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Java sort()數(shù)組排序(升序和降序)

 更新時間:2021年01月21日 10:01:26   作者:c語言中文網(wǎng)  
這篇文章主要介紹了詳解Java sort()數(shù)組排序(升序和降序),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

我們在學(xué)習(xí) Java 的過程中肯定會遇到對數(shù)組進(jìn)行升序或降序等排序問題,本節(jié)主要介紹如何實現(xiàn) Java 數(shù)組的升序和降序。Java 語言使用 Arrays 類提供的 sort() 方法來對數(shù)組進(jìn)行排序。

升序

使用 java.util.Arrays 類中的 sort() 方法對數(shù)組進(jìn)行升序分為以下兩步:

  1. 導(dǎo)入 java.util.Arrays 包。
  2. 使用 Arrays.sort(數(shù)組名) 語法對數(shù)組進(jìn)行排序,排序規(guī)則是從小到大,即升序。

假設(shè)在數(shù)組 scores 中存放了 5 名學(xué)生的成績,現(xiàn)在要實現(xiàn)從低到高排列的功能。在這里使用 Arrays.sort() 方法來實現(xiàn),具體代碼如下:

public static void main(String[] args) {
  // 定義含有5個元素的數(shù)組
  double[] scores = new double[] { 78, 45, 85, 97, 87 };
  System.out.println("排序前數(shù)組內(nèi)容如下:");
  // 對scores數(shù)組進(jìn)行循環(huán)遍歷
  for (int i = 0; i < scores.length; i++) {
    System.out.print(scores[i] + "\t");
  }
  System.out.println("\n排序后的數(shù)組內(nèi)容如下:");
  // 對數(shù)組進(jìn)行排序
  Arrays.sort(scores);
  // 遍歷排序后的數(shù)組
  for (int j = 0; j < scores.length; j++) {
    System.out.print(scores[j] + "\t");
  }
}

如上述代碼所示,要對一個數(shù)組進(jìn)行升序排列,只需要調(diào)用 Arrays.sort() 方法即可。運行后的輸出結(jié)果如下所示。

排序前數(shù)組內(nèi)容如下:
78.0    45.0    85.0    97.0    87.0  
排序后的數(shù)組內(nèi)容如下:
45.0    78.0    85.0    87.0    97.0

降序

在 Java 語言中使用 sort 實現(xiàn)降序有兩種方法,簡單了解即可。

1)利用 Collections.reverseOrder() 方法(Collections 是一個包裝類。大家可以學(xué)習(xí)《Java Collections類》一節(jié)詳細(xì)了解):

public static void main(String[] args) {
  Integer[] a = { 9, 8, 7, 2, 3, 4, 1, 0, 6, 5 };  // 數(shù)組類型為Integer
  Arrays.sort(a, Collections.reverseOrder());
  for (int arr : a) {
    System.out.print(arr + " ");
  }
}

輸出結(jié)果如下:
9 8 7 6 5 4 3 2 1 0

2)實現(xiàn) Comparator 接口的復(fù)寫 compare() 方法,代碼如下:

public class Test {
  public static void main(String[] args) {
    /*
     * 注意,要想改變默認(rèn)的排列順序,不能使用基本類型(int,double,char)而要使用它們對應(yīng)的類
     */
    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 + " ");
    }
  }
}
// 實現(xiàn)Comparator接口
class MyComparator implements Comparator<Integer> {
  @Override
  public int compare(Integer o1, Integer o2) {
    /*
     * 如果o1小于o2,我們就返回正值,如果o1大于o2我們就返回負(fù)值, 這樣顛倒一下,就可以實現(xiàn)降序排序了,反之即可自定義升序排序了
     */
    return o2 - o1;
  }
}

輸出結(jié)果如下所示。
9 8 7 6 5 4 3 2 1 0

注意:使用以上兩種方法時,數(shù)組必須是包裝類型,否則會編譯不通過。

在 Java 中實現(xiàn)數(shù)組排序的方式很多,除了利用以上的幾種方法外,還可以編寫自定義方法來實現(xiàn)自己的排序算法,有興趣的讀者可以嘗試編寫。

Java排序方法sort的使用詳解

對數(shù)組的排序:

//對數(shù)組排序
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);
    }
  }

到此這篇關(guān)于詳解Java sort()數(shù)組排序(升序和降序)的文章就介紹到這了,更多相關(guān)Java sort()數(shù)組排序內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 時間處理函數(shù)工具分享(時間戳計算)

    時間處理函數(shù)工具分享(時間戳計算)

    這篇文章主要介紹了時間處理函數(shù)工具,包括得到時間戳、周一、周末、時間更改、時間精確計算等功能
    2014-01-01
  • Java 14 發(fā)布了,你還會使用Lombok?

    Java 14 發(fā)布了,你還會使用Lombok?

    2020年3月17日發(fā)布,Java正式發(fā)布了JDK 14 ,目前已經(jīng)可以開放下載。在JDK 14中,共有16個新特性,本文主要來介紹其中的一個特性:JEP 359: Records,需要的朋友可以參考下
    2020-04-04
  • SpringBoot中@EnableAsync和@Async注解的使用小結(jié)

    SpringBoot中@EnableAsync和@Async注解的使用小結(jié)

    在SpringBoot中,可以通過@EnableAsync注解來啟動異步方法調(diào)用的支持,通過@Async注解來標(biāo)識異步方法,讓方法能夠在異步線程中執(zhí)行,本文就來介紹一下,感興趣的可以了解一下
    2023-11-11
  • pagehelper分頁工具類的封裝

    pagehelper分頁工具類的封裝

    這篇文章主要為大家詳細(xì)介紹了pagehelper分頁工具類的封裝,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • ElasticSearch學(xué)習(xí)之ES Mapping實戰(zhàn)示例

    ElasticSearch學(xué)習(xí)之ES Mapping實戰(zhàn)示例

    這篇文章主要為大家介紹了ElasticSearch學(xué)習(xí)之ES Mapping實戰(zhàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • Java使用設(shè)計模式中迭代器模式構(gòu)建項目的代碼結(jié)構(gòu)示例

    Java使用設(shè)計模式中迭代器模式構(gòu)建項目的代碼結(jié)構(gòu)示例

    這篇文章主要介紹了Java使用設(shè)計模式中迭代器模式構(gòu)建項目的代碼結(jié)構(gòu)示例,迭代器模式能夠?qū)υL問者隱藏對象的內(nèi)部細(xì)節(jié),需要的朋友可以參考下
    2016-05-05
  • java面試常見模式問題---代理模式

    java面試常見模式問題---代理模式

    代理模式是常用的java設(shè)計模式,他的特征是代理類與委托類有同樣的接口,代理類主要負(fù)責(zé)為委托類預(yù)處理消息、過濾消息、把消息轉(zhuǎn)發(fā)給委托類,以及事后處理消息
    2021-06-06
  • myBatis的mapper映射文件之批量處理方式

    myBatis的mapper映射文件之批量處理方式

    這篇文章主要介紹了myBatis的mapper映射文件之批量處理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Java深入講解Bean作用域與生命周期

    Java深入講解Bean作用域與生命周期

    這篇文章主要介紹了淺談Spring中Bean的作用域和生命周期,從創(chuàng)建到消亡的完整過程,例如人從出生到死亡的整個過程就是一個生命周期。本文將通過示例為大家詳細(xì)講講,感興趣的可以學(xué)習(xí)一下
    2022-06-06
  • SpringBoot實現(xiàn)接口等冪次校驗的示例代碼

    SpringBoot實現(xiàn)接口等冪次校驗的示例代碼

    本文主要介紹了SpringBoot實現(xiàn)接口等冪次校驗的示例代碼,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01

最新評論