在 Java 中,Arrays.sort()
是一个非常实用的数组排序方法,它位于 java.util.Arrays
类中,提供了多种重载形式,可用于对不同类型的数组进行排序。以下是关于 Arrays.sort()
的详细运用方法:
1. 对基本数据类型数组进行升序排序
Arrays.sort()
可以对 int
、long
、float
、double
、char
等基本数据类型的数组进行升序排序。
示例代码
收起
java
import java.util.Arrays;public class BasicSorting {public static void main(String[] args) {// 对 int 数组进行排序int[] intArray = {5, 3, 8, 1, 2};Arrays.sort(intArray);System.out.println("排序后的 int 数组: " + Arrays.toString(intArray));// 对 char 数组进行排序char[] charArray = {'d', 'a', 'c', 'b'};Arrays.sort(charArray);System.out.println("排序后的 char 数组: " + Arrays.toString(charArray));}
}
代码解释
Arrays.sort(intArray)
对int
类型的数组intArray
进行升序排序。Arrays.sort(charArray)
对char
类型的数组charArray
进行升序排序。
2. 对指定范围的数组进行排序
Arrays.sort()
还可以对数组的指定范围进行排序,使用形式为 Arrays.sort(arr, fromIndex, toIndex)
,其中 fromIndex
是起始索引(包含),toIndex
是结束索引(不包含)。
示例代码
收起
java
import java.util.Arrays;public class RangeSorting {public static void main(String[] args) {int[] arr = {5, 3, 8, 1, 2};// 对数组的索引 1 到 3(不包含 3)的元素进行排序Arrays.sort(arr, 1, 3);System.out.println("排序后的数组: " + Arrays.toString(arr));}
}
代码解释
Arrays.sort(arr, 1, 3)
只对数组 arr
中索引从 1 到 2 的元素进行排序,索引 0 和 3 及以后的元素保持不变。
3. 对对象数组进行排序
当对对象数组进行排序时,数组中的元素必须实现 java.lang.Comparable
接口,并重写 compareTo()
方法,以定义对象之间的比较规则。
示例代码
收起
java
import java.util.Arrays;// 定义一个实现 Comparable 接口的类
class Student implements Comparable<Student> {private int id;private String name;public Student(int id, String name) {this.id = id;this.name = name;}@Overridepublic int compareTo(Student other) {return Integer.compare(this.id, other.id);}@Overridepublic String toString() {return "Student{id=" + id + ", name='" + name + "'}";}
}public class ObjectSorting {public static void main(String[] args) {Student[] students = {new Student(3, "Alice"),new Student(1, "Bob"),new Student(2, "Charlie")};Arrays.sort(students);System.out.println("排序后的学生数组: " + Arrays.toString(students));}
}
代码解释
Student
类实现了Comparable<Student>
接口,并重写了compareTo()
方法,按照学生的id
进行比较。Arrays.sort(students)
对Student
类型的数组students
进行排序,排序规则由compareTo()
方法定义。
4. 使用自定义比较器进行排序
除了实现 Comparable
接口,还可以使用 java.util.Comparator
接口来定义自定义的比较规则。
示例代码
收起
java
import java.util.Arrays;
import java.util.Comparator;class Person {private int age;private String name;public Person(int age, String name) {this.age = age;this.name = name;}public int getAge() {return age;}@Overridepublic String toString() {return "Person{age=" + age + ", name='" + name + "'}";}
}public class CustomSorting {public static void main(String[] args) {Person[] persons = {new Person(25, "Alice"),new Person(20, "Bob"),new Person(30, "Charlie")};// 使用自定义比较器按年龄降序排序Arrays.sort(persons, new Comparator<Person>() {@Overridepublic int compare(Person p1, Person p2) {return Integer.compare(p2.getAge(), p1.getAge());}});System.out.println("按年龄降序排序后的人员数组: " + Arrays.toString(persons));}
}
代码解释
- 定义了一个
Person
类,包含age
和name
两个属性。 - 使用匿名内部类实现
Comparator<Person>
接口,并重写compare()
方法,定义按年龄降序排序的规则。 Arrays.sort(persons, comparator)
使用自定义的比较器对Person
类型的数组persons
进行排序。
5. 对包装类数组进行降序排序
对于包装类数组(如 Integer
、Double
等),可以使用 Collections.reverseOrder()
方法获取一个降序比较器。
示例代码
收起
java
import java.util.Arrays;
import java.util.Collections;public class ReverseSorting {public static void main(String[] args) {Integer[] numbers = {5, 3, 8, 1, 2};// 降序排序Arrays.sort(numbers, Collections.reverseOrder());System.out.println("降序排序后的数组: " + Arrays.toString(numbers));}
}
代码解释
Arrays.sort(numbers, Collections.reverseOrder())
使用 Collections.reverseOrder()
提供的降序比较器对 Integer
类型的数组 numbers
进行降序排序。
以上就是 Arrays.sort()
方法的常见运用方式,根据不同的需求可以选择合适的排序方式。