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