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

排序前:1,3,5,2,4,
排序后:1,2,3,4,5,

    public static void main(String[] args) {
        List<SysCompany> companyList = new ArrayList<>();
        SysCompany c1 = new SysCompany();
        c1.setSort(1);
        SysCompany c2 = new SysCompany();
        c2.setSort(2);
        SysCompany c3 = new SysCompany();
        c3.setSort(3);
        SysCompany c4 = new SysCompany();
        c4.setSort(4);
        SysCompany c5 = new SysCompany();
        c5.setSort(5);

        companyList.add(c1);
        companyList.add(c3);
        companyList.add(c5);
        companyList.add(c2);
        companyList.add(c4);

        for (SysCompany c:companyList)
            System.out.print(c.getSort()+",");

        System.out.println();
        Collections.sort(companyList, new Comparator<SysCompany>() {
            public int compare(SysCompany c1, SysCompany c2) {
                //降序
//                    return c2.getSort().compareTo(c1.getSort());
                //升序
                return c1.getSort().compareTo(c2.getSort());
            }
        });
        for (SysCompany c:companyList)
            System.out.print(c.getSort()+",");
    }
Java 中,可以使用 `Collections.sort()` 或 `List.sort()` 方法根据对象的某个属性对 `List` 进行排序。通常我们会结合 `Comparator` 接口来定义排序规则。 下面是一个完整的示例,展示如何根据某个属性(例如:`name` 或 `age`)对 `List` 进行升序或降序排序。 --- ### ✅ 示例代码:根据某个属性排序 ```java import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } @Override public String toString() { return "Person{name='" + name + "', age=" + age + "}"; } } public class Main { public static void main(String[] args) { List<Person> people = new ArrayList<>(); people.add(new Person("Alice", 30)); people.add(new Person("Bob", 25)); people.add(new Person("Charlie", 35)); people.add(new Person("David", 25)); // 按年龄升序排序 people.sort(Comparator.comparingInt(Person::getAge)); System.out.println("按年龄升序排序:"); people.forEach(System.out::println); // 按年龄降序排序 people.sort(Comparator.comparingInt(Person::getAge).reversed()); System.out.println("\n按年龄降序排序:"); people.forEach(System.out::println); // 按姓名排序(自然顺序) people.sort(Comparator.comparing(Person::getName)); System.out.println("\n按姓名排序:"); people.forEach(System.out::println); } } ``` --- ### 📌 代码解释: 1. **`Comparator.comparingInt(Person::getAge)`**: - 根据 `age` 属性构建一个比较器 - 使用 `comparingInt` 避免自动装箱/拆箱,效率更高 2. **`.reversed()`**: - 反转比较器,实现降序排序 3. **`people.sort(...)`**: - Java 8+ 推荐使用 `List.sort()` 方法进行排序 - 也可以使用 `Collections.sort(list, comparator)`,但 `List.sort()` 更简洁 4. **链式排序(多条件排序)**: ```java people.sort(Comparator.comparingInt(Person::getAge) .thenComparing(Person::getName)); ``` - 先按年龄排序,年龄相同时按姓名排序 --- ### 🔍 注意事项: - 如果对象属性为 `String`,可以直接使用 `Comparator.comparing(Person::getName)` - 如果需要自定义排序逻辑(如忽略大小写),可以传入自定义比较器: ```java Comparator.comparing(p -> p.getName().toLowerCase()) ``` - 如果排序字段可能为 `null`,应使用 `nullsFirst` 或 `nullsLast` 处理: ```java Comparator.comparing(Person::getName, Comparator.nullsFirst(Comparator.naturalOrder())) ``` --- ### ✅ 总结: Java 中对 `List` 按某个属性排序的核心方法是使用 `Comparator`,通过 `Comparator.comparingXXX` 方法定义排序规则,并通过 `List.sort()` 或 `Collections.sort()` 应用该规则。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值