list中根据对象的某个属性排序

本文介绍了一个使用Java对自定义对象列表进行降序排序的例子。通过实现Comparator接口,根据CityModel对象的city_code字段进行排序,并展示了排序后的结果。

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

package com.njwd.costreport.test;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

public class TestSort {
    public static void main(String[] args) {
        CityModel city1 = new CityModel();
        city1.setCity_code(1);

        CityModel city2 = new CityModel();
        city2.setCity_code(2);

        CityModel city3 = new CityModel();
        city3.setCity_code(3);

        CityModel city4 = new CityModel();
        city4.setCity_code(4);

        CityModel city5 = new CityModel();
        city5.setCity_code(5);

        ArrayList<CityModel> list = new ArrayList<>();
        list.add(city4);
        list.add(city1);
        list.add(city2);
        list.add(city5);
        list.add(city3);

        Collections.sort(list, new Comparator<CityModel>(){
            public int compare(CityModel o1, CityModel o2) {
                //按照CityModel的city_code字段进行降序排列
                if(o1.getCity_code() < o2.getCity_code()){
                    return -1;
                }
                if(o1.getCity_code() == o2.getCity_code()){
                    return 0;
                }
                return 1;
            }
        });
        for (CityModel cityModel:list) {
            System.out.println(cityModel.getCity_code());
        }

    }
}

 

### 如何根据对象属性对Java `List` 进行排序 为了实现基于对象特定字段的排序,在定义类时通常需要重写比较逻辑。对于给定的例子,假设有一个名为 `Student` 的类,其中包含学号、姓名和年龄三个成员变量。 如果希望按照学生的名字对学生列表进行升序排列,则可以利用自定义比较器来完成此操作[^1]: ```java import java.util.*; class Student implements Comparable<Student> { int id; String name; int age; public Student(int id, String name, int age){ this.id = id; this.name = name; this.age = age; } @Override public String toString(){ return "[" + id + ", " + name + ", " + age + "]"; } // 实现compareTo方法以便自然顺序排序 @Override public int compareTo(Student o) { return this.name.compareTo(o.name); } } public class ArrayListSorting { public static void main(String args[]){ ArrayList<Student> arraylist = new ArrayList<>(); arraylist.add(new Student(223, "Chaitanya", 26)); arraylist.add(new Student(245, "Rahul", 24)); arraylist.add(new Student(209, "Ajeet", 32)); // 使用默认的Comparator对学生按名字排序 Collections.sort(arraylist); for(Student student : arraylist){ System.out.println(student); } } } ``` 上述代码展示了如何通过让 `Student` 类继承 `Comparable` 接口并覆盖其 `compareTo()` 方法来自定义排序行为。然而,有时候可能想要根据不同条件灵活调整排序方式而不改变原有类结构;这时就可以创建外部比较器实例传递给 `sort()` 函数作为第二个参数: ```java // 创建一个新的Comparator用于指定不同的排序依据 Comparator<Student> compareById = Comparator.comparingInt((Student s) -> s.id); Collections.sort(arraylist, compareById); ``` 这样做不仅保持了原始类设计不变,还允许在同一类型的集合上应用多种排序策略。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值