Collections.sort的用法

本文深入探讨了Java中集合的排序方法,包括基本的Integer类型排序和复杂Student对象的排序。详细解释了Collections.sort()方法的使用,以及如何通过实现Comparable接口或使用Comparator接口自定义排序规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 @Test
    public void test4(){
       List<Integer> list =  new ArrayList<Integer>();
       for (int i = 10 ; i >= 1 ; i --){
             list.add(i);
       }
        System.out.println(list);
        Collections.sort(list);
        System.out.println(list);
    }

定义一个泛型为Ineger的 集合, 对集合内的数据进行排序, 当程序运行到第一个输出语句中的list时,可以看到 list再进行排序前是降序的

进行排序后,集合内的排序发生改变, 从降序变为升序.

2 对bean类型排序

我们创建一个测试student 对象, 对象中有三个属性,如下


@Data
public class Student {
    private Integer id ;
    private String name ;
    private Integer age ;
}

编写一个测试类 

    @Test
    public void test5(){
        List<Student> list =  new ArrayList<Student>();
        String[] s = {"a","b","c","d","e","f","g","h","i","j"};
        for (int i = 1 ; i<= 10 ; i ++){
            Student student = new Student();
            student.setId(i);
            student.setAge(10-i+1);
            student.setName(s[i-1]);
            list.add(student);
        }
        Collections.sort(list<Student>);

        System.out.println(list);
    }

这个时候 sort方法会报错, 原因是sort方法进行排序的前提条件是 该集合类型需要实现Comparable 接口, 而我们的student类并没有实现其接口, 所以会报错. 这个时候我们调用sort的第二种方法

 public void test5(){
        List<Student> list =  new ArrayList<Student>();
        String[] s = {"a","b","c","d","e","f","g","h","i","j"};
        for (int i = 1 ; i<= 10 ; i ++){
            Student student = new Student();
            student.setId(i);
            student.setAge(10-i+1);
            student.setName(s[i-1]);
            list.add(student);
        }
        Collections.sort(list, new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {
                return o2.getId() -  o1.getId();
            }
        });
        System.out.println(list);
    }

在方法中创建Comparator实例并且重写其compare方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值