java的list集合如何根据对象中的某个字段排序

本文介绍了如何使用Java的Collections工具类根据List集合中对象的特定字段进行排序。通过提供自定义比较器,可以实现灵活且非侵入性的排序方式,例如按字符串长度或员工工资等进行排序。

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

集合提供了一个工具类:java.util.Collections
集合的工具类提供了若干静态方法,可以方便我们队集合做一系列操作,其中之一就是排序
需要注意,提供的方法只能对List集合排序,因为Set集合不全是有序的。
但是如果要求根据集合中某个元素的值排序,该如何进行呢?
代码演示

public static void main(String[] args) {
        List<String> list = new ArrayList<String>();
        list.add("abc");
        list.add("abcd");
        list.add("abcde");
        System.out.println(list);
        Collections.sort(list, new Comparator<String>(){
            public int compare(String o1, String o2) {
                return o1.length()-o2.length();
            }});
        System.out.println(list);
    }

此段代码将根据字符串长度从短到长排序。


单独将此代码取出

Collections.sort(list, new Comparator<String>(){
            public int compare(String o1, String o2) {
                return o1.length()-o2.length();
            }});

Collection提供了一个重载的sort方法,可以允许传入一个额外的比较器
按照该比较器的规则对元素比较大小后进行排序。
1.排序方式可以自定,更灵活
2.不要求元素必须实现Comparable接口,没有侵入性


更多例子:比如在对员工集合进行整理时,要对员工工资进行排序,也可以使用此方法
只需将compare中参数,返回值进行修改即可。

public int compare(Emp o1, Emp o2) {
                    return o1.getSalary()-o2.getSalary(); 
                }

根据工资升序排序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值