My_Java之笔记(8)- 实现TreeSet集合的排序方法
来源:互联网 发布:sai绘画软件安卓版 编辑:程序博客网 时间:2024/05/17 23:20
方法一:元素实现Comparable接口,重写compareTo()方法,实现集合排序
方法二:定义一个比较器传给TreeSet的构造函数,该比较器实现Comparator接口,重写compare()方法,实现集合排序
import java.util.TreeSet;import java.util.Iterator;import java.util.Comparator;/**1.实现Comparable接口,重写compareTo()方法,实现集合排序*/class Student implements Comparable{ String name; int age; Student(String name, int age) { this.name=name; this.age=age; } public int compareTo(Object obj) { if(!(obj instanceof Student)) throw new RuntimeException("不是学生对象"); Student o = (Student)obj; if(this.age==o.age) return this.name.compareTo(o.name); else if(this.age>o.age) return 1; else return -1; } public String toString() { return this.name+"-"+this.age; }}class Test{public static void main(String[] args){TreeSet<Student> ts = new TreeSet<Student>();ts.add(new Student("John",20));ts.add(new Student("Jack",20));ts.add(new Student("Jam",21));Iterator<Student>it = ts.iterator();while(it.hasNext()){System.out.println(it.next());}/**2.(匿名内部类的方式)实现Comparator接口,重写compare()方法,实现集合排序*/TreeSet<Student> ts2 = new TreeSet<Student>(new Comparator<Student>(){public int compare(Student sa, Student sb){if(sa.age==sb.age) return sa.name.compareTo(sb.name); else if(sa.age>sb.age) return 1; else return -1;}});ts2.add(new Student("John",20));ts2.add(new Student("Jack",20));ts2.add(new Student("Jam",21));System.out.println();Iterator<Student>it2 = ts2.iterator();while(it2.hasNext()){System.out.println(it2.next());} }}
测试结果:
Jack-20John-20Jam-21Jack-20John-20Jam-21
- My_Java之笔记(8)- 实现TreeSet集合的排序方法
- My_Java之笔记(5)- 方法的重载与重写
- My_Java之笔记(4)-文件的读与写
- My_Java之笔记(6)- 完美equals()的定义
- My_Java之笔记(1)-多态
- Java学习笔记之集合(六):TreeSet集合的实现原理
- 集合框架——Set(TreeSet实现Comparator方法排序)
- My_Java之笔记(2)-基本数据类型对象包装类
- My_Java之笔记(3)-对象初始化顺序
- My_Java之笔记(7)- super区别于this
- java自学笔记————对于TreeSet实现排序的两种方法;
- TreeSet集合,可排序的集合
- Java笔记之HashSet与TreeSet集合的运用
- TreeSet实现集合中对象排序
- 实现Comparator方式排序一TreeSet集合
- TreeSet集合两个排序方法方法的分析&&Map集合获取的两中方式
- 数组与集合的应用之常用集合的使用(用TreeSet生成不重复自动排序随机数组)
- 集合之TreeSet(1)
- 第十二章 POSIX 线程(一)
- 内核启动出现Partially written xxx block detected
- linux 磁盘配额
- IT人不可不听的8个职场故事
- Source Insight 的应用技巧
- My_Java之笔记(8)- 实现TreeSet集合的排序方法
- ARM9+Linux下USB摄像头图像采集
- Oracle数据库查询优化的经验和方法
- 键盘焦点
- asp.net在后台给前台的控件设置Style属性与坐标,后台设置CSS样式,后台获取前台控件坐标
- What is Deinterlacing--小引
- C 语言--位段摘要
- char*到LPCWSTR的转换方法
- java线程