集合框架的 sort ()方法使用合并排序算法對(duì)集合的元素進(jìn)行排序。
合并排序算法基于分而治之規(guī)則。 要了解有關(guān)合并排序的更多信息,請(qǐng)?jiān)L問合并排序算法。
讓我們以sort()方法為例。
import java.util.ArrayList; import java.util.Collections; class Main { public static void main(String[] args) { //創(chuàng)建數(shù)組列表 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); } }
輸出結(jié)果
Unsorted ArrayList: [4, 2, 3] Sorted ArrayList: [2, 3, 4]
正如您看到的,默認(rèn)情況下,排序按照自然順序(升序)進(jìn)行。但是,我們可以自定義 sort ()方法的排序順序。
在Java中,可以自定義sort()方法,使用Comparator接口以相反的順序執(zhí)行排序。
import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; class Main { public static void main(String[] args) { //創(chuàng)建數(shù)組列表 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; } } }
輸出結(jié)果
Unsorted ArrayList: [4, 2, 3] Natural Sorting: [2, 3, 4] Customized Sorting: [4, 3, 2]
在上面的示例中,我們使用了sort()方法和CustomComparator作為參數(shù)。
這里,CustomComparator是一個(gè)實(shí)現(xiàn)Comparator接口的類。進(jìn)一步了解Java Comparator接口。
然后重寫compare()方法。該方法現(xiàn)在將按相反順序?qū)υ嘏判颉?/p>