如何对List中的对象按照某一个String类型的属性或者int类型属性进行排序

本文详细介绍如何使用Java对List集合中的Student对象进行排序,包括按int属性(如年龄)和String属性(如姓名)的升序和降序排序方法。通过自定义Comparator实现排序逻辑。

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

1.许多时候我们得到的List并不是我们最终要输出的,所以我们还需要进行排序,下面自己写代码进行排序

分类一: int属性进行排序

  代码: 

List<Student> list = new ArrayList<Student>();
        
        //创建3个学生对象,年龄分别是20、19、21,并将他们依次放入List中
        Student s1 = new Student();
        s1.setAge(20);
        s1.setName("P02C004194");
        Student s2 = new Student();
        s2.setAge(19);
        s2.setName("P02C003191");
        Student s3 = new Student();
        s3.setAge(21);
        s3.setName("P02C002190");
        list.add(s1);
        list.add(s2);
        list.add(s3);
        
        System.out.println("排序前:"+list);
         Collections.sort(list, new Comparator<Student>(){
 
            /*
             * int compare(Student o1, Student o2) 返回一个基本类型的整型,
             * 返回负数表示:o1 小于o2,
             * 返回0 表示:o1和o2相等,
             * 返回正数表示:o1大于o2。
             */
            public int compare(Student o1, Student o2) {
            
                //按照学生的年龄进行升序排列
               if(o1.getAge() > o2.getAge()){
                  return 1;
               }
                if(o1.getAge() == o2.getAge()){
                    return 0;
                }
                return -1;

            }
        }); 
        System.out.println("排序后:"+list);
    }
}
class Student{
    
    private int age;
    
    private String name;
 
    public int getAge() {
        return age;
    }
 
    public void setAge(int age) {
        this.age = age;
    }
    
    
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Student [age=" + age + ", name=" + name + "]";
    }
    
}

 

 

二、按照String类型进行排序:

   其余都不变只是排序方法的修改,    

Collections.sort(list, new Comparator<Student>(){
            public int compare(Student o1, Student o2) {
                //按照学生的姓名进行升序排列
                if(o1.getName().compareTo(o2.getName())==0){
                    return 1;
                }else{
                    return o1.getName().compareTo(o2.getName());
                }    }
        }); 

  按照降序排序:

Collections.sort(list, new Comparator<Student>(){
            public int compare(Student o1, Student o2) {
                //按照学生的姓名进行降序排列
                if(o1.getName().compareTo(o2.getName())==0){
                    return 1;
                }else{
                    return o2.getName().compareTo(o1.getName());
                }    }
        }); 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值