posts - 609,  comments - 13,  views - 64万
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

代码1

复制代码
List<Integer> list = Arrays.asList(10,1,3,4,6,7);
        // 降序排列
        Collections.sort(list, new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o2.compareTo(o1);
            }
        });
        for (Integer item : list){
            System.out.println(item);
        }
复制代码

代码2:

复制代码
class StudentTest implements Comparable<StudentTest> {
    private String name;
    private int age;

    public StudentTest() {
    }

    public StudentTest(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "name:" + this.name + ";age:" + this.age;
    }

    @Override
    public int compareTo(StudentTest o) {
        // 先按age排序
        if (this.age > o.getAge()) {
            return (this.age - o.getAge());
        }
        if (this.age < o.getAge()) {
            return (this.age - o.getAge());
        }

        // 再按name排序
        if (this.name.compareTo(o.getName()) > 0) {
            return 1;
        }
        if (this.name.compareTo(o.getName()) < 0) {
            return -1;
        }
        return 0;
    }
}
复制代码

使用:

StudentTest[] list = new StudentTest[4];
        list[0] = new StudentTest("b1", 20);
        list[1] = new StudentTest("a2", 50);
        list[2] = new StudentTest("a1", 20);
        list[3] = new StudentTest("b2", 40);
        Arrays.sort(list);
        System.out.println(Arrays.toString(list));

输出:
[name:a1;age:20, name:b1;age:20, name:b2;age:40, name:a2;age:50]
说明:返回值大于0:靠前;等于0:不变;小于零:靠后。
Comparator方式:

复制代码
Arrays.sort(list,new Comparator<StudentTest>() {
            @Override
            public int compare(StudentTest o1, StudentTest o2) {
                // 先按age倒序排序
                if (o1.getAge() > o2.getAge()) {
                    return -1;
                }
                if (o1.getAge() < o2.getAge()) {
                    return 1;
                }
                // 再按name倒序
                if (o1.getName().compareTo(o2.getName()) > 0) {
                    return -1;
                }
                if (o1.getName().compareTo(o2.getName()) < 0) {
                    return 1;
                }
                return 0;
            }
        });
        System.out.println(Arrays.toString(list));
复制代码

输出:[name:a2;age:50, name:b2;age:40, name:b1;age:20, name:a1;age:20]

posted on   邢帅杰  阅读(63)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示