Java List排序

1. List排序是我们经常用到的。
2. 2种方法
    collections.sort(List<T> list)
    //对list进行升序排列. 列表中所有的元素必须执行了Comparable接口 ,即列表中所有的元素都是可以相互 比较的(e1.compareTo(e2)。util实现的排序方法是稳定排序 
    collections.sort(List<T> list, Comparator<? super T> c)
    //可以自定义排序(自定义排序顺序,可以降序升序)
3. 举例
    //方法1,list中对象试想comparable接口
    class Stu implements Comparable<Stu>
    {
        String name;
        int age;
        public Stu(String name, int age) {
            // TODO Auto-generated constructor stub
            this.name = name;
            this.age = age;
        }

        public void print(){
            System.out.println(age + "\t" + name);
        }

        @Override
        public int compareTo(Stu o) {
            // TODO Auto-generated method stub
            int num = age - o.age;
            if(num == 0){
                return name.compareTo(o.name);
            }
            return num;
        }
        public static void main(String[] args) {
            List<Stu> list = new ArrayList<>();
            Stu e1 = new Stu("a", 10);
            list.add(e1);
            Stu e2 = new Stu("a", 11);
            list.add(e2);
            Stu e3 = new Stu("b", 10);
            list.add(e3);
            Collections.sort(list);
            for(Stu e : list)
            {
                e.print();
            }
        }
    }

//方法2重载Collections.sort()函数
class Stu
{
    String name;
    int age;
    public Stu(String name, int age) {
        // TODO Auto-generated constructor stub
        this.name = name;
        this.age = age;
    }

    public void print(){
        System.out.println(age + "\t" + name);
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        List<Stu> list = new ArrayList<>();
        Stu e1 = new Stu("a", 10);
        list.add(e1);
        Stu e2 = new Stu("a", 11);
        list.add(e2);
        Stu e3 = new Stu("b", 10);
        list.add(e3);
        Collections.sort(list, new Comparator<Stu>() {
            public int compare(Stu o1, Stu o2) 
            {
                int num = o1.age - o2.age;
                if(num == 0){
                    return o1.name.compareTo(o2.name);
                }
                return num;
            };
        });
        for(Stu e : list)
        {
            e.print();
        }
    }
}

其实Collections.sort()函数的内部实现是调用list.sort()函数->将list变为数组toArray()->对数组排序Arrays.sort()
即上面也可以改为
public static void main(String[] args) {
        // TODO Auto-generated method stub
        List<Stu> list = new ArrayList<>();
        Stu e1 = new Stu("a", 10);
        list.add(e1);
        Stu e2 = new Stu("a", 11);
        list.add(e2);
        Stu e3 = new Stu("b", 10);
        list.add(e3);
        list.sort(new Comparator<Stu>() {
            public int compare(Stu o1, Stu o2) 
            {
                int num = o1.age - o2.age;
                if(num == 0){
                    return o1.name.compareTo(o2.name);
                }
                return num;
            };
        });
        for(Stu e : list)
        {
            e.print();
        }
    }
    或者
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        List<Stu> list = new ArrayList<>();
        Stu e1 = new Stu("a", 10);
        list.add(e1);
        Stu e2 = new Stu("a", 11);
        list.add(e2);
        Stu e3 = new Stu("b", 10);
        list.add(e3);
        Stu[] array = (Stu[]) list.toArray(new Stu[list.size()]);
        Arrays.sort(array, new Comparator<Stu>() {
            public int compare(Stu o1, Stu o2) 
            {
                int num = o1.age - o2.age;
                if(num == 0){
                    return o1.name.compareTo(o2.name);
                }
                return num;
            };
        });
        for(Stu e : list)
        {
            e.print();
        }
    }
Java中,可以使用Collections类的sort方法对List进行排序。引用\[1\]中的代码展示了如何使用Collections.sort方法对一个包含整数的List进行排序。首先,创建一个ArrayList对象,并向其中添加整数元素。然后,使用Collections.sort方法对该List进行排序。最后,打印排序后的List。这种方法适用于简单的整数排序。 如果要对自定义对象进行排序,可以实现Comparable接口或使用Comparator接口。引用\[2\]中的代码展示了如何对一个包含自定义对象的List进行排序。首先,创建一个ArrayList对象,并向其中添加自定义对象。然后,使用Collections.sort方法对该List进行排序。最后,打印排序后的List。在这个例子中,自定义对象实现了Comparable接口,因此可以直接使用Collections.sort方法进行排序。 另一种方法是使用Listsort方法和Comparator接口。引用\[3\]中的代码展示了如何使用Listsort方法和Comparator接口对一个包含自定义对象的List进行排序。首先,创建一个ArrayList对象,并向其中添加自定义对象。然后,使用Listsort方法和Comparator.comparing方法对该List进行排序。最后,打印排序后的List。这种方法更简洁,只需要一行代码即可完成排序。 综上所述,可以根据需要选择合适的方法对Java中的List进行排序。 #### 引用[.reference_title] - *1* *3* [Java List排序的几种方式整理](https://blog.youkuaiyun.com/Wjhsmart/article/details/115935693)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Java:详解List集合的排序功能](https://blog.youkuaiyun.com/weixin_43092673/article/details/123910945)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值