list.sort()接收一個Comparable接口,其中compare方法是必須實現的,int compare(T o1, T o2);
,它接受兩個參數:o1,o2. o2表示list排序前的前值,o1為后值,compare對他們通過比較進行排序。compare如果返回1
則表示o1在后,o2在前(等價於位置不變);返回-1
表示o1在前o2在后(等價置換o1與o2的位置);返回0
表示位置不變
可以使用lambda表達式進行從小到大排序:
public static void main(String[] args) { List<Integer> list = new ArrayList<>(); Random random = new Random(); for (int i = 0; i < 10; i++) { list.add(random.nextInt(100)); } // 從小到大排序 list.sort((o1, o2) -> { if (o1.equals(o2)) { return 0; } else if (o1 > o2) { //o2為前值,o1為后值;這里理解為:后值比前值大,則不交換位置,等價從小到大排序 //如果這里返回 -1,則為從大到小排序 return 1; } else { //后值比前值小,則交換位置 return -1; } }); list.forEach(e -> System.out.print(e + " ")); }
如果需要從大到小排序,只需要將代碼中 return 1
改成return -1
, return -1
改成return 0
即可.