[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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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中的次方符号怎么写