Java Arrays.sort()方法

原文:https://www.studytonight.com/java-util/java-arrays-sort-method

在本教程中,我们将学习 JavaArrays类的sort()方法。这个方法接受一个数组并按升序排序。我们可以通过提供一系列带有startIndexendIndex的数组来扩展这个方法的特性。让我们看看它的语法和例子。

句法

static void    sort(datatype[] array)

sort()方法重载方法列表

此表包含sort()方法的所有重载变体。

方法 描述
静态空排序(字节[]数组) 此方法将指定的数组按升序排列。
静态空排序(字节[]数组,int fromIndex,int toIndex) 此方法将数组的指定范围按升序排序。
静态空排序(char[]数组) 此方法将指定的数组按升序排列。
静态空排序(char[]数组,int fromIndex,int toIndex) 此方法将数组的指定范围按升序排序。
静态空排序(双[]数组) 此方法将指定的数组按升序排列。
静态空排序(double[]数组,int fromIndex,int toIndex) 此方法将数组的指定范围按升序排序。
静态空排序(float[]数组) 此方法将指定的数组按升序排列。
静态空排序(float[]数组,int fromIndex,int toIndex) 此方法将数组的指定范围按升序排序。
静态空排序(int[]数组) 此方法将指定的数组按升序排列。
静态空排序(int[]数组,int fromIndex,int toIndex) 此方法将数组的指定范围按升序排序。
静态空排序(长[]数组) 此方法将指定的数组按升序排列。
静态空排序(长[]数组,int fromIndex,int toIndex) 此方法将数组的指定范围按升序排序。
静态空排序(短[]数组) 此方法将指定的数组按升序排列。
静态空排序(短[]数组,int fromIndex,int toIndex) 此方法将数组的指定范围按升序排序。
静态空排序(对象[]数组) 此方法根据元素的自然顺序,将指定的对象数组按升序排序。
静态空排序(对象[]数组,从索引到索引) 此方法根据元素的自然顺序,将指定对象数组的指定范围按升序排序。
静态虚空排序?(T[] a,int fromIndex,int toIndex,Comparator super T> c) 此方法根据指定Comparator引发的顺序对指定对象数组的指定范围进行排序。
静态虚空排序?(测试[] a,Comparator super T> c) 此方法根据指定Comparator引发的顺序对指定的对象数组进行排序。

sort()方法示例

在下面的例子中,我们可以看到 sort()方法正在接受最初没有排序的arr ,这个方法按照升序排序。

import java.util.Arrays;
class StudyTonight { 
    public static void main(String args[]) 
    { 
        int arr[] = {10, 8, 12, 1, 12, 5, 16, 4, 10, 3, 14, 11, 20, 17, 18};
        System.out.println("Array Before Sorting ");
        for(int num:arr)
        {
            System.out.print(num+" ");
        }
        Arrays.sort(arr);
        System.out.println("\nArray After Sorting ");
        for(int num:arr)
        {
            System.out.print(num+" ");
        }
    } 
}

排序前排列 10 8 12 1 12 5 16 4 10 3 14 11 20 17 18 排序后排列 1 3 4 5 8 10 10 11 12 12 14 16 17 18 20

具有不同数据类型和不同范围的数组的 sort()方法示例

在下面的程序中,我们已经说明了如何在不同的数据类型上使用sort()方法,作为参考,我们提到了一个int 数组和一个float数组。类似地,我们还可以看到如何提供数组的范围,以便在特定的范围上只执行排序。

import java.util.Arrays;
class StudyTonight { 
    public static void main(String args[]) 
    { 
        int array1[] = {10, 8, 12, 1, 12, 5, 16, 4, 10, 3, 14, 11, 20, 17, 18};
        //sorting an array from index 4 to 10 only
        Arrays.sort(array1, 4, 10);
        System.out.println("array1 is sorted from index 4 to 10 ");
        for(int num:array1)
        {
            System.out.print(num+", ");
        }        
        //sorting an array completely
        Arrays.sort(array1);
        System.out.println("\n\narray1 is sorted completely");
        for(int num:array1)
        {
            System.out.print(num+", ");
        }        
        //sorting an array from index 0 to 5 only
        double array2[] = {4.5, 2.6, 11.23, 5.8, 8.9, 10.24, 5.6, 3.2, 1.2, 8.7};
        Arrays.sort(array2, 0, 5);
        System.out.println("\n\narray2 is sorted from index 0 to 5");
        for(double num:array2)
        {
            System.out.print(num+", ");
        }        
        //sorting an array completely
        Arrays.sort(array2);
        System.out.println("\n\narray2 is sorted completely");
        for(double num:array2)
        {
            System.out.print(num+", ");
        }
    } 
}

数组 1 从索引 4 到 10 排序 10、8、12、1、3、4、5、10、12、16、14、11、20、17、18、 数组 1 完全排序 1、3、4、5、8、10、10、11、12、12、14、16、17、18、20、 数组 2 从索引 0 到 5 排序 2.6、

使用sort()方法不仅可以对原始数据类型进行排序,还可以对像对象数组这样的非原始数据类型进行排序

对对象数组进行排序的sort()方法示例

在下面的例子中,我们说明了如何使用sort()方法对非原始数据类型的数组进行排序,就像类的数组一样。

例如,我们有一个Student 类及其对象数组,我们希望根据学生的人数对它们进行排序。为了定义这种自定义排序,我们需要一个Comparator

import java.util.Arrays;
import java.util.Comparator;
class Student
{
    String stud_name;
    int roll_no;    
    Student(String stud_name, int roll_no)
    {
        this.stud_name=stud_name;
        this.roll_no=roll_no;
    }     
}
class Sortbyroll implements Comparator<Student>
{
    public int compare(Student s1, Student s2)
    {
        return s1.roll_no - s2.roll_no;
    }
}
class StudyTonight{ 
    public static void main(String args[]) 
    { 
        Student arr[] = new Student[5];
        arr[0] = new Student("KLM",7);
        arr[1] = new Student("PQR",5);
        arr[2] = new Student("GHI",1);
        arr[3] = new Student("ABC",9);
        arr[4] = new Student("MNO",4);
        System.out.println("Array Before Sorting: ");
        for(Student obj:arr)
        {
            System.out.println("Name: "+obj.stud_name+" Roll No:"+obj.roll_no);             
        }        
        Arrays.sort(arr,new Sortbyroll());
        System.out.println("\nArray After Sorting: ");
        for(Student obj:arr)
        {
            System.out.println("Name: "+obj.stud_name+" Roll No:"+obj.roll_no);             
        }
    }

}

排序前阵: 名称:荷航辊号:7 名称:PQR 辊号:5 名称:GHI 辊号:1 名称:ABC 辊号:9 名称:MNO 辊号:4

排序后阵: 名称:GHI 辊号:1 名称:MNO 辊号:4 名称:PQR 辊号:5 名称:荷航辊号:7 名称:ABC 辊号:9

重载排序()方法示例

在下面的方法中,我们在各种数据类型上实现了 sort()方法的所有超长方法,如bytecharintdoublefloatshort。我们还通过传递startIndexendIndex在不同范围的数组上实现了这个方法。

import java.util.Arrays;
public class StudyTonight 
{
    public static void main(String[] args) 
    {
        byte byteArray[] = {5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60}; 
        Arrays.sort(byteArray,0,5);
        System.out.println("Arrays.sort(byteArray,0,5): "+Arrays.toString(byteArray));
        Arrays.sort(byteArray);
        System.out.println("Arrays.sort(byteArray): "+Arrays.toString(byteArray));        

        char charArray[] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k'}; 
        Arrays.sort(charArray,0,5);
        System.out.println("Arrays.sort(charArray,0,5): "+Arrays.toString(charArray));
        Arrays.sort(charArray);
        System.out.println("Arrays.sort(charArray): "+Arrays.toString(charArray));

        int intArray[] = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150};
        Arrays.sort(intArray,0,5);
        System.out.println("Arrays.sort(intArray,0,5): "+Arrays.toString(intArray));
        Arrays.sort(intArray);
        System.out.println("Arrays.sort(intArray): "+Arrays.toString(intArray));

        double doubleArray[] = {5.1, 6.2, 7.2, 8.1, 9.4, 10.2, 11.6, 12.96, 13.2, 14.25, 15.6, 16.4, 17.2}; 
        Arrays.sort(doubleArray,0,5);
        System.out.println("Arrays.sort(doubleArray,0,5): "+Arrays.toString(doubleArray));
        Arrays.sort(intArray);
        System.out.println("Arrays.sort(doubleArray): "+Arrays.toString(doubleArray));

        float floatArray[] = {1f, 2f, 3f, 4f, 5f, 6f, 7f, 8f, 9f, 10f}; 
        Arrays.sort(floatArray,0,5);
        System.out.println("Arrays.sort(floatArray,0,5): "+Arrays.toString(floatArray));
        Arrays.sort(floatArray);
        System.out.println("Arrays.sort(floatArray): "+Arrays.toString(floatArray));

        short shortArray[] = {2, 4, 6, 8, 10 ,12, 14, 16, 18, 20}; 
        Arrays.sort(shortArray,0,5);
        System.out.println("Arrays.sort(shortArray,0,5): "+Arrays.toString(shortArray));
        Arrays.sort(shortArray);
        System.out.println("Arrays.sort(shortArray): "+Arrays.toString(shortArray));
    }
}

数组.排序(字节数组,0,5): [5,10,15,20,25,30,35,40,45,50,55,60] 数组.排序(字节数组):[5,10,15,20,25,30,35,40,45,50,55,60] 数组.排序(字符数组,0,5): [a,b,c,d,e,f 90,100,110,120,130,140,150] 数组.排序(双数组,0,5):【5.1,6.2,7.2,8.1,9.4,10.2,11.6,12.96,13.2,14.25,15.6,16.4,17.2】 数组.排序(双数组):【5.1,6.2,7.2

结论:

在本教程中,我们学习了如何使用sort()方法对给定数据类型的数组进行排序。该数据类型可以是任何类似intfloatchardoublelongbyteObject<T>的数据类型。为了修改基于类的一些数据成员的排序,我们还可以定义Comparator函数。