collections 框架的 sort()
方法使用归并排序算法对集合的元素进行排序。
归并排序算法基于分治法。要了解更多关于归并排序的信息,请访问 归并排序算法。
让我们以 sort()
方法为例。
示例:升序排序
import java.util.ArrayList;
import java.util.Collections;
class Main {
public static void main(String[] args) {
// Creating an array list
ArrayList<Integer> numbers = new ArrayList<>();
// Add elements
numbers.add(4);
numbers.add(2);
numbers.add(3);
System.out.println("Unsorted ArrayList: " + numbers);
// Using the sort() method
Collections.sort(numbers);
System.out.println("Sorted ArrayList: " + numbers);
}
}
输出
Unsorted ArrayList: [4, 2, 3] Sorted ArrayList: [2, 3, 4]
正如你所见,默认情况下,排序按自然顺序(升序)进行。但是,我们可以自定义 sort()
方法的排序顺序。
自定义排序顺序
在 Java 中,可以使用 Comparator
接口自定义 sort()
方法以执行反向排序。
示例:降序排序
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
class Main {
public static void main(String[] args) {
// Creating an array list
ArrayList<Integer> numbers = new ArrayList<>();
// Add elements
numbers.add(4);
numbers.add(2);
numbers.add(3);
System.out.println("Unsorted ArrayList: " + numbers);
// Using the sort() method
Collections.sort(numbers);
System.out.println("Natural Sorting: " + numbers);
// Using the customized sort() method
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;
}
}
}
输出
Unsorted ArrayList: [4, 2, 3] Natural Sorting: [2, 3, 4] Customized Sorting: [4, 3, 2]
在上面的示例中,我们将 sort()
方法与 CustomComparator 作为参数一起使用。
在这里,CustomComparator 是一个实现 Comparator
接口的类。了解更多关于Java Comparator 接口。
然后我们重写 compare()
方法。该方法现在将按反向顺序对元素进行排序。