Arrays.sort

在 Java 中,Arrays.sort() 是一个非常实用的数组排序方法,它位于 java.util.Arrays 类中,提供了多种重载形式,可用于对不同类型的数组进行排序。以下是关于 Arrays.sort() 的详细运用方法:

1. 对基本数据类型数组进行升序排序

Arrays.sort() 可以对 intlongfloatdoublechar 等基本数据类型的数组进行升序排序。

示例代码

收起

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;
    }

    @Override
    public int compareTo(Student other) {
        return Integer.compare(this.id, other.id);
    }

    @Override
    public 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;
    }

    @Override
    public 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>() {
            @Override
            public 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. 对包装类数组进行降序排序

对于包装类数组(如 IntegerDouble 等),可以使用 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() 方法的常见运用方式,根据不同的需求可以选择合适的排序方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值