English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
集合框架的 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); } }
Output result
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); //Elements are sorted in reverse order if (value > 0) { return -1; } else if (value < 0) { return 1; } else { return 0; } } }
Output result
Unsorted ArrayList: [4, 2, 3] Natural Sorting: [2, 3, 4] Customized Sorting: [4, 3, 2]
In the above example, we used the sort() method and CustomComparator as a parameter.
Here, CustomComparator is a class that implements the Comparator interface. Learn more about the Java Comparator interface.
Then rewrite the compare() method. This method now sorts the elements in reverse order.