编辑这个页面须要登录或更高权限!

Java sort()方法

集合框架的 sort ()方法使用合并排序算法对集合的元素进行排序。

合并排序算法基于分而治之规则。 要了解有关合并排序的更多信息,请访问合并排序算法。

让我们以sort()方法为例。

示例:按升序排序

import java.util.ArrayList;
import java.util.Collections;

class Main {
    public static void main(String[] args) {

        //创建数组列表
        ArrayList<Integer> numbers = new ArrayList<>();

        //添加元素
        numbers.add(4);
        numbers.add(2);
        numbers.add(3);
        System.out.println("Unsorted ArrayList: " + numbers);

        //使用sort()方法
        Collections.sort(numbers);
        System.out.println("Sorted ArrayList: " + numbers);

    }
}

输出结果

Unsorted ArrayList: [4, 2, 3]
Sorted ArrayList: [2, 3, 4]

正如您看到的,默认情况下,排序按照自然顺序(升序)进行。但是,我们可以自定义 sort ()方法的排序顺序。

自定义排序顺序

在Java中,可以自定义sort()方法,使用Comparator接口以相反的顺序执行排序。

示例:按降序排序

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

class Main {
    public static void main(String[] args) {

        //创建数组列表
        ArrayList<Integer> numbers = new ArrayList<>();

        //添加元素
        numbers.add(4);
        numbers.add(2);
        numbers.add(3);
        System.out.println("Unsorted ArrayList: " + numbers);

        //使用sort()方法
        Collections.sort(numbers);
        System.out.println("Natural Sorting: " + numbers);

        //使用自定义的sort()方法
        Collections.sort(numbers, new CustomComparator());
        System.out.println("Customized Sorting: " + numbers);

    }
}

class CustomComparator implements Comparator<Integer> {

    @Override
    public int compare(Integer animal1, Integer animal2) {
        int value =  animal1.compareTo(animal2);
        //元素按相反顺序排序
        if (value > 0) {
            return -1;
        }
        else if (value < 0) {
            return 1;
        }
        else {
            return 0;
        }
    }
}

输出结果

Unsorted ArrayList: [4, 2, 3]
Natural Sorting: [2, 3, 4]
Customized Sorting: [4, 3, 2]

在上面的示例中,我们使用了sort()方法和CustomComparator作为参数。

这里,CustomComparator是一个实现Comparator接口的类。进一步了解Java Comparator接口。

然后重写compare()方法。该方法现在将按相反顺序对元素排序。

Java 菜鸟教程
Java 流程控制
Java 数组
Java 面向对象(I)
Java 面向对象(II)
Java 面向对象(III)
Java 异常处理
Java 列表(List)
Java Queue(队列)
Java Map集合
Java Set集合
Java 输入输出(I/O)
Java Reader/Writer
Java 其他主题