[java]三种自定义链表排序方式

代码:

复制代码
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;

class Emp{
    String name;
    int age;
    
    public Emp(String name,int age) {
        this.name=name;
        this.age=age;
    }
    
    public String toString() {
        return "Emp name="+name+" age="+age;
    }
}
public class Dept {
    private List<Emp> emps;
    
    public Dept() {
        emps=new ArrayList<Emp>();
        
        emps.add(new Emp("Bill",32));
        emps.add(new Emp("Cindy",42));
        emps.add(new Emp("Cindy",12));
        emps.add(new Emp("Cindy",52));
        emps.add(new Emp("Douglas",92));
        emps.add(new Emp("Andy",22));
    }
    
    public void printEmps() {
        for(Emp emp:emps) {
            System.out.println(emp);
        }
    }
    
    /**
     * Sort by age
     */
    public void sort1() {
        emps.sort(new Comparator<Emp>() {
           public int compare(Emp a1, Emp a2){
            return a1.age-a2.age;
          }
        });
    }
    
    /**
     * Sort by name
     */
    public void sort2() {
        emps.sort((Emp a1, Emp a2)->a1.name.compareTo(a2.name));
    }
    
    /**
     * Sort by name,if same name,sort by age
     */
    public void sort3() {
        emps.sort(new Comparator<Emp>() {
           public int compare(Emp a1, Emp a2){
              int result=a1.name.compareTo(a2.name);
              
              if(result==0) {
                  return a1.age-a2.age;
              }else {
                  return result;
              }
          }
        });
    }
    
    public static void main(String[] args) {
        Dept dept=new Dept();
        dept.sort1();
        dept.printEmps();
        
        System.out.println("--------------");
        dept.sort2();
        dept.printEmps();
        
        System.out.println("--------------");
        dept.sort3();
        dept.printEmps();
    }
}
复制代码

输出:

复制代码
Emp name=Cindy age=12
Emp name=Andy age=22
Emp name=Bill age=32
Emp name=Cindy age=42
Emp name=Cindy age=52
Emp name=Douglas age=92
--------------
Emp name=Andy age=22
Emp name=Bill age=32
Emp name=Cindy age=12
Emp name=Cindy age=42
Emp name=Cindy age=52
Emp name=Douglas age=92
--------------
Emp name=Andy age=22
Emp name=Bill age=32
Emp name=Cindy age=12
Emp name=Cindy age=42
Emp name=Cindy age=52
Emp name=Douglas age=92
复制代码

--END-- 2019.11.06

posted @   逆火狂飙  阅读(692)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
历史上的今天:
2017-11-06 【Canvas与徽章】盾形银底红带Best Quality Premium标牌
2017-11-06 【Canvas与色彩】十六等分多彩隔断圆环
2017-11-06 【Canvas与色彩】十二等分多彩隔断圆环
2017-11-06 【Canvas与艺术】黄金黑圈比特币
2013-11-06 换掉Tomcat默认图标
2013-11-06 Html中的次方符号怎么写
生当作人杰 死亦为鬼雄 至今思项羽 不肯过江东
点击右上角即可分享
微信分享提示