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

java中Arrays.sort()排序方法舉例詳解

 更新時間:2023年11月17日 11:38:04   作者:從0到1的旅行家  
這篇文章主要給大家介紹了關(guān)于java中Arrays.sort()排序方法舉例詳解的相關(guān)資料,Java?Arrays.sort()方法對數(shù)組進行排序,通常情況下直接傳入數(shù)組,默認升序排序,文中通過代碼介紹的非常詳細,需要的朋友可以參考下

Java中的Arrays.sort()方法是一種內(nèi)置的排序方法,用于對數(shù)組進行排序。這是一個來自java.util.Arrays類的靜態(tài)方法,用于對所有的基本數(shù)據(jù)類型對象數(shù)組以及對象數(shù)組進行排序。排序的默認順序是升序。

一、方法重載

Arrays.sort()方法有許多重載版本,可以接受不同類型的輸入,并對它們進行排序。以下是一些常見的重載版本:

  • Arrays.sort(byte[] a): 對字節(jié)型數(shù)組進行排序
  • Arrays.sort(char[] a): 對字符型數(shù)組進行排序
  • Arrays.sort(double[] a): 對雙精度浮點型數(shù)組進行排序
  • Arrays.sort(float[] a): 對浮點型數(shù)組進行排序
  • Arrays.sort(int[] a): 對整型數(shù)組進行排序
  • Arrays.sort(long[] a): 對長整型數(shù)組進行排序
  • Arrays.sort(short[] a): 對短整型數(shù)組進行排序
  • Arrays.sort(Object[] a): 對對象數(shù)組進行排序,此方法要求數(shù)組中的對象必須實現(xiàn)了Comparable接口
  • Arrays.sort(T[] a, Comparator<? super T> c): 對對象數(shù)組進行排序,使用一個定制的Comparator對象來比較數(shù)組中的元素

二、注意事項

  • 對于對象數(shù)組,如果使用默認的Arrays.sort(Object[] a)方法進行排序,那么數(shù)組中的對象必須實現(xiàn)了Comparable接口。如果對象沒有實現(xiàn)這個接口,那么在運行時會拋出ClassCastException

  • Arrays.sort(T[] a, Comparator<? super T> c)這個版本的方法允許你傳入一個Comparator對象來自定義排序的規(guī)則。如果傳入的Comparator對象為null,那么此方法將會使用元素的自然順序進行排序。

  • 對于對象數(shù)組的排序,Arrays.sort()方法使用的是穩(wěn)定的排序算法,這意味著等值的元素在排序后會保持他們原有的相對位置。

  • Arrays.sort()方法的時間復(fù)雜性為O(n log n)。

  • Arrays.sort()方法會對輸入的數(shù)組進行直接排序,也就是說,它會改變輸入數(shù)組的元素順序。如果不希望改變原數(shù)組的元素順序,那么在排序前需要先對數(shù)組進行復(fù)制。

三、舉例

(1)對于基本數(shù)據(jù)類型的數(shù)組,排序時會按照升序排序;

int[] arr = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};
Arrays.sort(arr); // 對數(shù)組進行排序

for (int i = 0; i < arr.length; i++) {
    System.out.print(arr[i] + " ");
}

輸出結(jié)果:

1 1 2 3 3 4 5 5 5 6 9

ps:Arrays.sort() 方法使用的是快速排序算法和歸并排序算法,具體使用哪一種算法取決于數(shù)組的大小和類型。當數(shù)組長度小于 Arrays.MIN_ARRAY_SORT_GRAN 時,使用插入排序算法對其進行排序。

(2)對對象數(shù)組進行排序

可以通過實現(xiàn) Comparator 接口來指定比較器對象。Comparator 接口需要實現(xiàn) compare() 方法,該方法接受兩個對象作為參數(shù),并返回一個整數(shù)值,用于表示這兩個對象的大小關(guān)系。如果返回的值為負數(shù),則表示第一個對象小于第二個對象,為正序;如果返回的值為正數(shù),則表示第一個對象大于第二個對象,為逆序;如果返回的值為0,則表示兩個對象相等。

import java.util.*;

class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}

class PersonAgeComparator implements Comparator<Person> {
    @Override
    public int compare(Person o1, Person o2) {
        return o1.getAge() - o2.getAge();
    }
}

public class Main {
    public static void main(String[] args) {
        Person[] people = {
                new Person("Alice", 25),
                new Person("Bob", 20),
                new Person("Charlie", 30)
        };

        Arrays.sort(people, new PersonAgeComparator());

        for (Person p : people) {
            System.out.println(p.getName() + " " + p.getAge());
        }
    }
}

輸出結(jié)果

Bob 20
Alice 25
Charlie 30

在該示例中,定義了一個 Person 類,包含兩個屬性 name 和 age。我們按照年齡對 Person 對象數(shù)組進行排序,創(chuàng)建了一個 PersonAgeComparator 類,實現(xiàn)了 Comparator 接口,并重寫了 compare() 方法。在  main() 方法中,調(diào)用 Arrays.sort() 方法,并入 PersonAgeComparator 對象,來對 Person 對象數(shù)組進行排序。

總結(jié)

到此這篇關(guān)于java中Arrays.sort()排序方法的文章就介紹到這了,更多相關(guān)java Arrays.sort()排序內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mybatis中嵌套使用foreach需要注意的坑

    mybatis中嵌套使用foreach需要注意的坑

    在使用MyBatis進行數(shù)據(jù)庫操作時,如果需要在一個大的foreach標簽中嵌套另一個foreach,需要注意內(nèi)層foreach的item屬性不能與外層重復(fù),如果出現(xiàn)重復(fù),會導(dǎo)致綁定參數(shù)時找不到正確的參數(shù),從而拋出異常
    2024-09-09
  • 深入理解Spring bean加載順序

    深入理解Spring bean加載順序

    在默認配置下,SpringBean的加載順序主要受到Bean定義順序、依賴關(guān)系和生命周期回調(diào)方法的影響,本文就來了解一下Spring bean加載順序,感興趣的同學(xué)可以學(xué)習(xí)
    2024-10-10
  • Java異常Exception詳細講解

    Java異常Exception詳細講解

    異常就是不正常,比如當我們身體出現(xiàn)了異常我們會根據(jù)身體情況選擇喝開水、吃藥、看病、等?異常處理方法。?java異常處理機制是我們java語言使用異常處理機制為程序提供了錯誤處理的能力,程序出現(xiàn)的錯誤,程序可以安全的退出,以保證程序正常的運行等
    2022-07-07
  • IDEA部署Tomcat的超詳細圖文教程

    IDEA部署Tomcat的超詳細圖文教程

    最近迫于無奈從我哪破舊的Eclipse轉(zhuǎn)換到了IDEA,然后就是超多的不習(xí)慣,下面這篇文章主要給大家介紹了關(guān)于IDEA部署Tomcat的相關(guān)資料,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-02-02
  • Java中Spring使用Quartz任務(wù)調(diào)度定時器

    Java中Spring使用Quartz任務(wù)調(diào)度定時器

    本篇文章主要介紹了Java中Spring使用Quartz任務(wù)調(diào)度定時器,具有一定的參考價值,有興趣的可以了解一下。
    2017-02-02
  • 一篇文章搞定Struts2的類型轉(zhuǎn)換

    一篇文章搞定Struts2的類型轉(zhuǎn)換

    這篇文章主要介紹了關(guān)于Struts2類型轉(zhuǎn)換的相關(guān)資料,文中主要介紹了Struts2的類型轉(zhuǎn)換器和自定義類型轉(zhuǎn)換器的實現(xiàn),有需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-02-02
  • java中的三種取整函數(shù)總結(jié)

    java中的三種取整函數(shù)總結(jié)

    下面小編就為大家?guī)硪黄猨ava中的三種取整函數(shù)總結(jié)。希望對大家有所幫助。一起跟隨小編過來看看吧,祝大家游戲愉快哦
    2016-11-11
  • 通過自定制LogManager實現(xiàn)程序完全自定義的logger

    通過自定制LogManager實現(xiàn)程序完全自定義的logger

    本章主要闡述怎么完全定制化LogManager來實現(xiàn)應(yīng)用程序完全自定制的logger,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-03-03
  • java 父類子類有同名方法時如何調(diào)用的實現(xiàn)

    java 父類子類有同名方法時如何調(diào)用的實現(xiàn)

    這篇文章主要介紹了java 父類子類有同名方法時如何調(diào)用的實現(xiàn),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • JavaWeb Spring注解Annotation深入學(xué)習(xí)

    JavaWeb Spring注解Annotation深入學(xué)習(xí)

    這篇文章主要為大家詳細介紹了JavaWeb Spring注解Annotation,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09

最新評論