Java Arrays.sort()
方法
原文:https://www.studytonight.com/java-util/java-arrays-sort-method
在本教程中,我们将学习 Java 中Arrays
类的sort()
方法。这个方法接受一个数组并按升序排序。我们可以通过提供一系列带有startIndex
和endIndex
的数组来扩展这个方法的特性。让我们看看它的语法和例子。
句法
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) | 此方法将数组的指定范围按升序排序。 |
静态空排序(对象[]数组) | 此方法根据元素的自然顺序,将指定的对象数组按升序排序。 |
静态空排序(对象[]数组,从索引到索引) | 此方法根据元素的自然顺序,将指定对象数组的指定范围按升序排序。 |
静态Comparator super T> c) |
此方法根据指定Comparator 引发的顺序对指定对象数组的指定范围进行排序。 |
静态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()方法的所有超长方法,如byte
、char
、int
、double
、float
和short
。我们还通过传递startIndex
和endIndex
在不同范围的数组上实现了这个方法。
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()
方法对给定数据类型的数组进行排序。该数据类型可以是任何类似int
、float
、char
、double
、long
、byte
、Object
或<T>
的数据类型。为了修改基于类的一些数据成员的排序,我们还可以定义Comparator
函数。