通过实现Comparable接口结合TreeSet来对对象自动排序
发布日期:2021-06-29 18:31:04
浏览次数:2
分类:技术文章
本文共 1272 字,大约阅读时间需要 4 分钟。
经过会遇到这样的情况,对于某个对象数组或者链表要按照一定的规则进行排序,那么我们该怎么做呢?
如遇到这样的需求: 1.需求1 对于学生对象按照年龄进行排序,年龄小的排在前面。 单单看到这样的需求,实现起来是比较简单的,自己写个函数实现一下快速排序或者比较土的冒泡排序,按照年龄来排序就可以了。我们再看看下面的需求 2.需求2 对于学生对象,按照年龄进行排序,年龄小的排在前面,年龄相同的,身高小的排在前面。 3.需求3 对于学生对象,按照年龄进行排序,年龄小的排在前面;年龄相同的,身高小的排在前面;身高相同时,体重轻的排在前面。 。。。 这样的需求,可能会随着页面的复杂化,越来越来复杂,如果要自己去做的话,估计得多层嵌套了,逻辑非常复杂,那是否有现成的比较简单的机制呢。答案就是实现Comparable接口。
具体样例如下:
public class Student implements Comparable{
private int age; public Student(int age) { this.age = age; } @Override public int compareTo(Object obj) { Student stu = (Student)obj; if(this.age>stu.age) return 1; else if(this.age<stu.age) return -1; else return 0; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }调用代码:
public static void main(String[] args) {
TreeSet<Student> treeSet = new TreeSet<Student>(); treeSet.add(new Student(1)); treeSet.add(new Student(3)); treeSet.add(new Student(2)); for(Student student:treeSet) { System.out.println(student.getAge()); } }输出结果:
1 2 3可见自动按照年龄进行了排序,我们再修改一下代码,让学生按照年龄由大到排列:
public int compareTo(Object obj) {
Student stu = (Student)obj; if(this.age>stu.age) return -1; else if(this.age<stu.age) return 1; else return 0; }输出结果:
3 2 1由此可见,这种通过对象实现Comparable接口,结合TreeSet的方式来进行对象排序,还是十分方便的,而且逻辑比较简单,后续如果有变更,直接修改compareTo方法即可。
转载地址:https://cxyxy.blog.csdn.net/article/details/24189575 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2024年04月15日 23时37分30秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
java程序员从笨鸟到菜鸟之(七)一—java数据库操作
2019-04-30
Java程序员从笨鸟到菜鸟之(八)反射和代理机制
2019-04-30
面试心得与总结—BAT、网易、蘑菇街
2019-04-30
Java对象初始化顺序
2019-04-30
Java开发的几个注意点
2019-04-30
我的Java后端书架 (2016年暖冬4.0版)
2019-04-30
每个程序员都必读的10篇文章
2019-04-30
也谈IO模型
2019-04-30
谈谈互联网后端基础设施
2019-04-30
Mybatis的ResultMap的使用
2019-04-30
Java 异常处理的误区和经验总结
2019-04-30
Chrome控制台使用详解
2019-04-30
Chrome 控制台console的用法(学了之后对于调试js可是大大有用的哦)
2019-04-30
15 个必须知道的 Chrome 开发工具技巧
2019-04-30
推荐的四款产品原型设计工具
2019-04-30
Spring基础知识汇总 Java开发必看
2019-04-30
设计模式(一)工厂模式Factory(创建型)
2019-04-30