java中list的sort()功能如何使用?如果倒序如何正序?


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 -1return -1改成return 0即可.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM