Java 数组排序

Java 排序方法是数组方法之一,用于将用户指定的数组按升序或降序排序。本文将介绍如何按升序和降序对 Byte、Object 数组、Integer、Char、Long、Double、Float 和 Short 数组进行排序。此编程语言中数组排序的基本语法如下所示。

Java 数组排序方法语法

Java 编程语言提供了十八种方法来对原始数组进行排序。以下方法将 Byte 数组作为参数,并将 Byte 数组按升序排序。

public static void sort(byte[] anByteArray); 

//In order to use in program
Arrays.sort(byte[] anByteArray);

下面的排序方法将 Byte 数组作为第一个参数。起始索引位置(fromIndex),排序将从该位置开始,作为第二个参数(整数值),最后一个索引位置(toIndex),排序将在此位置结束,作为第三个参数。Arrays.sort 方法将从 fromIndex 开始对数组元素进行排序,直到 toIndex,但不包含 toIndex。

public static void sort(byte[] anByteArray, int fromIndex, int toIndex); 

//In order to use in program
Arrays.sort(byte[] anByteArray, int fromIndex, int toIndex);

下面的 Java 方法将 Short 数组作为参数,并将 Short 数组按升序排序。

public static void sort(short[] anShortArray); 

//In order to use in program
Arrays.sort(short[] anShortArray);

它将 Short 数组作为第一个参数,起始索引位置(fromIndex)作为第二个参数,最后一个索引位置(toIndex)作为第三个参数。

public static void sort(byte[] anByteArray, int fromIndex, int toIndex); 

//In order to use in program
Arrays.sort(byte[] anByteArray, int fromIndex, int toIndex);

它将 Character 数组作为参数,并将 char 数组按升序排序。

public static void sort(char[] anCharArray); 

//In order to use in program
Arrays.sort(char[] anCharArray);

此排序方法将 Character 数组作为第一个参数,起始索引位置(fromIndex),最后一个索引位置(toIndex)作为第三个参数。

public static void sort(char[] anCharArray, int fromIndex, int toIndex); 

//In order to use in program
Arrays.sort(char[] anCharArray, int fromIndex, int toIndex);

它将 Integer 数组作为参数,并将 Int 数组按升序排序。

public static void sort(int[] anIntArray); 

//In order to use in program
Arrays.sort(int[] anIntArray);

此 Java 方法将 Integer 数组作为第一个参数,排序将开始的起始索引位置(fromIndex)作为第二个参数。排序将结束的最后一个索引位置(toIndex)作为第三个参数。

public static void sort(int[] anIntArray, int fromIndex, int toIndex); 

//In order to use in program
Arrays.sort(int[] anIntArray, int fromIndex, int toIndex);

以下方法将 Long 数组作为参数,并将 Long 数组按升序排序。

public static void sort(long[] anLongArray); 

//In order to use in program
Arrays.sort(long[] anLongArray);

它将 Long 数组作为第一个参数,fromIndex 作为第二个参数,toIndex 作为第三个参数。

public static void sort(long[] anLongArray, int fromIndex, int toIndex); 

//In order to use in program
Arrays.sort(long[] anLongArray, int fromIndex, int toIndex);

该方法将 Double 数组作为参数,并将 Double 数组按升序排序。

public static void sort(double[] anDoubleArray); 

//In order to use in program
Arrays.sort(double[] anDoubleArray);

以下方法将 Double 数组,起始索引位置(fromIndex)作为第二个参数,最后一个索引位置(toIndex)作为第三个参数。

public static void sort(double[] anDoubleArray, int fromIndex, int toIndex); 

//In order to use in program
Arrays.sort(double[] anDoubleArray, int fromIndex, int toIndex);

此 Java 方法将浮点数数组作为参数,并将 Float 数组按升序排序。

public static void sort(float[] anFloatArray); 

//In order to use in program
Arrays.sort(float[] anFloatArray);

它接受浮点数数组,起始索引位置(fromIndex),以及最后一个索引位置(toIndex)。

public static void sort(float[] anFloatArray, int fromIndex, int toIndex); 

//In order to use in program
Arrays.sort(float[] anFloatArray, int fromIndex, int toIndex);

此方法接受 Object 数组作为参数。它根据指定的 Comparator 对 Object 数组进行排序。

public static void sort(T[] Array, Comparator<? super T> cmp); 

//In order to use in program
Arrays.sort(T[] Array, Comparator<? super T> cmp);

排序方法接受 Object 数组,起始索引位置(fromIndex),最后一个索引位置(toIndex),以及 Comparator(指定顺序)作为第四个参数。

public static void sort(T[] Array, int fromIndex, int toIndex, Comparator<? super T> cmp); 

//In order to use in program
Arrays.sort(T[] Array, int fromIndex, int toIndex, Comparator<? super T> cmp);
  • fromIndex:请指定起始索引位置。这是排序开始的索引位置。
  • toIndex:请指定结束索引位置。此方法将排序到此索引位置。但是,它不包含此位置(toIndex)的元素。

在 Java 中排序 Byte 数组

该方法将从 FromtoIndex 开始对数组元素进行排序,直到 toIndex,但不包含 toIndex。在此程序中,我们使用随机数组元素声明了 byte 数组。然后我们将按升序对元素数组进行排序。

package ArrayMethods;
import java.util.Arrays;

public class ByteSort {
	public static void main(String[] args) {
		byte[] byteArray = {20, 8, 4, 18, 45}; 
		byte[] bitArray = {10, 25, 8, 19, 16, 5}; 
		
		//Sorting  in Ascending Order
		Arrays.sort(byteArray);
	
		//Printing the Output
		System.out.println("Sorting Byte Array:");
		arrayPrint(byteArray);
		
		//Sorting Array using Indexes
		Arrays.sort(bitArray, 1, 5);
		
		//Printing the Output
		System.out.println("Sorting Byte Array Using Index:");
		arrayPrint(bitArray);
	}
	public static void arrayPrint(byte[] anByteArray) {
		for (byte Number: anByteArray) {
			System.out.println("Array Elelment = " + Number);
		}
	}
}
Java Array Sort 1

在此排序示例中,我们声明了两个 byte 数组。接下来,我们使用以下语句为数组元素分配了一些随机值。

byte[] byteArray = {20, 8, 4, 18, 45}; 
byte[] bitArray = {10, 25, 8, 19, 16, 5};

它将调用 public static void sort(byte[] anByteArray) 方法按升序对 byte 数组进行排序。

Arrays.sort(byteArray);

它将 Byte 数组元素打印到输出。

arrayPrint(byteArray);

我们使用 Java For Loop 迭代 Byte 数组。然后我们使用 System.out.println 语句打印每个数组元素。

public static void arrayPrint(byte[] anByteArray) {
	for (byte Number: anByteArray) {
		System.out.println("Array Elelment = " + Number);
	}
}

它调用 public static void sort(byte[] anByteArray, int fromIndex, int toIndex) 方法按升序对从索引位置 1 到位置 4 的 byte 数组进行排序。

Arrays.sort(bitArray, 1, 5);

Java 排序 Short 数组

我们使用随机数组元素声明了 Short 数组。然后我们将按升序对 short 数组元素进行排序。

package ArrayMethods;
import java.util.Arrays;
public class ShortSort {
	public static void main(String[] args) {
		short[] shrArray = {9, 6, 2, 7, 5}; 
		short[] ShortArray = {10, 5, 8, 4, 6}; 	
	
		//Sorting Array in Ascending Order
		Arrays.sort(shrArray);
		System.out.println("Sorting Short Array:");
		arrayPrint(shrArray);
		
		//Sorting Array using Indexes
		Arrays.sort(ShortArray, 0, 4);
		System.out.println("Sorting Short Array Using Index:");
		arrayPrint(ShortArray);
	}
	public static void arrayPrint(short[] anShortArray) {
		for (short Number: anShortArray) {
			System.out.println("Array Elelment = " + Number);
		}
	}
}
Sorting Short Array:
Array Elelment = 2
Array Elelment = 5
Array Elelment = 6
Array Elelment = 7
Array Elelment = 9
Sorting Short Array Using Index:
Array Elelment = 4
Array Elelment = 5
Array Elelment = 8
Array Elelment = 10
Array Elelment = 6

它将调用 public static void sort(short[] anShortArray) 方法按升序对 Short 数组进行排序。

Arrays.sort(shrArray);

它调用 public static void sort(short[] anShortArray, int fromIndex, int toIndex) 方法按升序对从索引位置 1 到位置 4 的 Short 数组进行排序。

Arrays.sort(ShortArray, 0, 4);

如何在 Java 中排序 Integer 数组?

在此排序方法程序中,我们使用随机元素声明了 Integer 数组。然后我们将按升序对 Int 数组元素进行排序。

package ArrayMethods;
import java.util.Arrays;
public class IntSort {
	public static void main(String[] args) {
		int[] IntArray = {98, 64, 7, 78, 35}; 
		int[] IntegerArray = {10, 25, 8, 19, 16}; 
		
		//Sorting Array in Ascending Order
		Arrays.sort(IntArray);
		System.out.println("Sorting Integer Array:");
		arrayPrint(IntArray);
		
		//Sorting Array using Indexes
		Arrays.sort(IntegerArray, 0, 3);
		System.out.println("Sorting Integer Array Using Index:");
		arrayPrint(IntegerArray);
	}
	public static void arrayPrint(int[] anIntArray) {
		for (int Number: anIntArray) {
			System.out.println("Array Elelment = " + Number);
		}
	}
}
Sorting Integer Array:
Array Elelment = 7
Array Elelment = 35
Array Elelment = 64
Array Elelment = 78
Array Elelment = 98
Sorting Integer Array Using Index:
Array Elelment = 8
Array Elelment = 10
Array Elelment = 25
Array Elelment = 19
Array Elelment = 16

它将调用 public static void sort(int[] anIntegerArray) 方法按升序对 integer 数组进行排序。

Arrays.sort(IntArray);

它调用 public static void sort(int[] anIntegerArray, int fromIndex, int toIndex) 方法按升序对从索引位置 1 到位置 4 的 integer 数组进行排序。

Arrays.sort(IntegerArray, 0, 3);

如何在 Java 中排序 Long 数组?

在此 Java 程序中,我们使用随机元素声明了 Long 数组。然后我们将按升序对 Long 数组元素进行排序。

package ArrayMethods;
import java.util.Arrays;

public class LongSort {
	public static void main(String[] args) {
		long[] LngArray = {198, 164, 17, 178, 135}; 
		long[] LongArray = {100, 250, 80, 190, 160}; 
		
		//Sorting Array in Ascending Order
		Arrays.sort(LngArray);
		System.out.println("Sorting Long Array:");
		arrayPrint(LngArray);
		
		//Sorting Array using Indexes
		Arrays.sort(LongArray, 1, 4);
		System.out.println("Sorting Long Array Using Index:");
		arrayPrint(LongArray);
	}
	public static void arrayPrint(long[] anLongArray) {
		for (long Number: anLongArray) {
			System.out.println("Array Elelment = " + Number);
		}
	}
}
Sorting Long Array:
Array Elelment = 17
Array Elelment = 135
Array Elelment = 164
Array Elelment = 178
Array Elelment = 198
Sorting Long Array Using Index:
Array Elelment = 100
Array Elelment = 80
Array Elelment = 190
Array Elelment = 250
Array Elelment = 160

它将调用 public static void sort(long[] anLongArray) 方法按升序对 Long 数组进行排序。

Arrays.sort(LngArray);

它调用 public static void sort(long[] anLongArray, int fromIndex, int toIndex) 方法按升序对从索引位置 1 到位置 3 的 Long 数组进行排序。

Arrays.sort(LongArray, 1, 4);

排序 Double 数组

在此程序中,我们使用随机元素声明了 Double 数组。然后我们将按升序对 Double 数组元素进行排序。

package ArrayMethods;
import java.util.Arrays;

public class DoubleSort {
	public static void main(String[] args) {
		double[] DoubArray = {98.68, 64.542, 7.98, 78.45, 35.76}; 
		double[] DoubleArray = {10.25, 25.9865, 8.485, 19.356, 16.489}; 
		
		//Sorting Array in Ascending Order
		Arrays.sort(DoubArray);
		System.out.println("Sorting Double Array:");
		arrayPrint(DoubArray);
		
		//Sorting Array using Indexes
		Arrays.sort(DoubleArray, 0, 3);
		System.out.println("Sorting Double Array Using Index:");
		arrayPrint(DoubleArray);
	}
	public static void arrayPrint(double[] anDoubleArray) {
		for (double Number: anDoubleArray) {
			System.out.println(Number);
		}
	}
}
Sorting Double Array:
7.98
35.76
64.542
78.45
98.68
Sorting Double Array Using Index:
8.485
10.25
25.9865
19.356
16.489

以下语句将调用 public static void sort(double[] anDoubleArray) 方法按升序对 Double 数组进行排序。

Arrays.sort(DoubArray);

它调用 public static void sort(double[] anDoubleArray, int fromIndex, int toIndex) 方法按升序对从索引位置 0 到位置 2 的 Double 数组进行排序。

Arrays.sort(DoubleArray, 0, 3);

如何在 Java 中排序 Float 数组?

在此方法程序中,我们使用随机数组元素声明了 Float 数组。然后我们将按升序对 Float 数组元素进行排序。

package ArrayMethods;
import java.util.Arrays;

public class FloatSort {
	public static void main(String[] args) {
		float[] floArray = {8.68f, 5.54f, 1.98f, 12.45f, 3.76f}; 
		float[] floatArray = {10.25f, 25.98f, 8.4f, 13.3f, 16.48f}; 
		
		//Sorting Array in Ascending Order
		Arrays.sort(floArray);
		System.out.println("Sorting Float Array:");
		arrayPrint(floArray);
		
		//Sorting Array using Indexes
		Arrays.sort(floatArray, 0, 4);
		System.out.println("Sorting Float Array Using Index:");
		arrayPrint(floatArray);
	}
	public static void arrayPrint(float[] anfloatArray) {
		for (float Number: anfloatArray) {
			System.out.println(Number);
		}
	}
}
Sorting Float Array:
1.98
3.76
5.54
8.68
12.45
Sorting Float Array Using Index:
8.4
10.25
13.3
25.98
16.48

以下语句将调用 public static void sort(float[] anFloatArray) 方法按升序对 Float 数组进行排序。

Arrays.sort(floArray);

它调用 public static void sort(float[] anFloatArray, int fromIndex, int toIndex) 方法按升序对从索引位置 0 到位置 3 的 Float 数组进行排序。

Arrays.sort(floatArray, 0, 4);

如何排序 Java 中的 Char 数组?

在此方法程序中,我们使用随机数组元素声明了 Character 数组。然后我们将按升序对 Char 数组元素进行排序。

package ArrayMethods;
import java.util.Arrays;

public class CharSort {
	public static void main(String[] args) {
		char[] CharArray = {'g', 'a', 't', 'e'}; 
		char[] CharacterArray = {'g', 'a', 't', 'e', 'w', 'a', 'y'}; 
		
		//Sorting Array in Ascending Order
		Arrays.sort(CharArray);
		System.out.println("Sorting Character Array:");
		arrayPrint(CharArray);
		
		//Sorting Array using Indexes
		Arrays.sort(CharacterArray, 2, 6);
		System.out.println("Sorting Character Array Using Index:");
		arrayPrint(CharacterArray);
	}
	public static void arrayPrint(char[] anCharacterArray) {
		for (char Number: anCharacterArray) {
			System.out.println(Number);
		}
	}
}
Sorting Character Array:
a
e
g
t
Sorting Character Array Using Index:
g
a
a
e
t
w
y

它将调用 public static void sort(char [] anCharArray) 方法按升序对 Char 数组进行排序。

Arrays.sort(CharArray);

它调用 public static void sort(char[] anCharArray, int fromIndex, int toIndex) 方法按升序对从索引位置 2 到位置 5 的 Char 数组进行排序。

Arrays.sort(CharacterArray, 2, 6);

Object 数组

在此 Java 数组排序方法程序中,我们使用随机数组元素声明了 String 数组。然后我们将按升序对 string object 数组元素进行排序。

package ArrayMethods;
import java.util.Arrays;

public class ObjectSort {
	public static void main(String[] args) {
		String[] strArray = {"Apple", "Orange", "Grape", "Banana", "Strawberry","Cherry", "Kiwi"};
		String[] stringArray = {"India", "UK", "USA", "Australia", "Japan","China", "Korea"};
		
		//Sorting Array in Ascending Order
		Arrays.sort(strArray);
		System.out.println("Sorting Object Array:");
		arrayPrint(strArray);
		
		//Sorting Array using Indexes
		Arrays.sort(stringArray, 2, 6);
		System.out.println("Sorting Object Array Using Index:");
		arrayPrint(stringArray);
	}
	public static void arrayPrint(Object[] anObjectArray) {
		for (Object Number: anObjectArray) {
			System.out.println(Number);
		}
	}
}
Sorting Object Array:
Apple
Banana
Cherry
Grape
Kiwi
Orange
Strawberry
Sorting Object Array Using Index:
India
UK
Australia
China
Japan
USA
Korea

在此程序中,以下语句将调用 public static void sort(Object[] anObjectArray) 方法按升序对 Object 数组进行排序。

Arrays.sort(strArray);

它调用 public static void sort(Object[] anObjectArray, int fromIndex, int toIndex) 方法按升序对从索引位置 2 到位置 5 的 Object 数组进行排序。

Arrays.sort(stringArray, 2, 6);

Java 方法对 Object 数组进行降序排序

在此 Java 程序中,我们使用随机数组元素声明了 String、Object 数组。然后此代码将按降序对 short 数组元素进行排序。

package ArrayMethods;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;

public class TestSort {
	public static void main(String[] args) {
		String[] stringArray = {"India", "UK", "USA", "Australia", "Japan","China", "Korea"};
		Object[] elements = {10, 5, 17, 2, 9, 11};
		// Ascending Order
		Comparator<String> cmp = Collections.reverseOrder();
		Arrays.sort(stringArray, cmp);
		System.out.println("Sorting Object Array:");
		arrayPrint(stringArray);
		
		//Using Indexes
		Comparator<Object> cms = Collections.reverseOrder();
		Arrays.sort(elements, 1, 5, cms);
		System.out.println("Sorting Object Array Using Index:");
		arrayPrint(elements);
	}
	public static void arrayPrint(Object[] anIntArray) {
		for (Object Number: anIntArray) {
			System.out.println(Number);
		}
	}
}
Sorting Object Array:
USA
UK
Korea
Japan
India
China
Australia
Sorting Object Array Using Index:
10
17
9
5
2
11

它将为 String Object 创建 Comparator。在右侧,我们调用 reverseOrder 方法并将顺序(降序)分配给 Comparator。

Comparator<String> cmp = Collections.reverseOrder();

以下语句将调用 public static void sort(T[] Array, Comparator<? super T> cmp) 方法按降序对 String object 数组进行排序。

Arrays.sort(stringArray, cmp);

它将为 Object 创建 Comparator。在右侧,我们调用 reverseOrder 方法并将顺序(降序)分配给 Comparator。

Comparator<Object> cms = Collections.reverseOrder();

以下语句将调用 public static void sort(T[] Array, int fromIndex, int toIndex, Comparator cmp) 方法按降序对从索引位置 1 到位置 5 的 Object 数组进行排序。

Arrays.sort(elements, 1, 5, cms);