TreeSet根据一个字段排序
2015-11-21 23:39
337 查看
TreeSet根据一个字段排序
package com.Set; import java.util.HashSet; import java.util.Iterator; import java.util.TreeSet; import javax.management.RuntimeErrorException; /** * * @author 小明 * 往TreeSet集合中存储自定义对象学生;想按照学生的年龄进行排序 */ class Student implements Comparable{//该接口强制比较性 private String name; private int age; Student(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 boolean equals(Object obj) { if(!(obj instanceof Student)){ return false; } Student p = (Student) obj; System.out.println(this.name+"-equals--"+p.name); return this.name.equals(p.name) && this.age==p.age; } @Override public int hashCode() { System.out.println(this.name+"...hashcode..."); //return 60; return name.hashCode()+age; } @Override public int compareTo(Object obj) { if(!(obj instanceof Student)){ throw new RuntimeException("不是学生") ; } Student s = (Student) obj; System.out.println(this.name +" comp.."+s.name); if(this.age >s.age){ return 1; } if(this.age==s.age){ return this.name.compareTo(s.name); } return -1; } } public class TreeSetTest { public static void main(String[] args) { TreeSet<Student> hs = new TreeSet<Student>(); hs.add(new Student("zhangsan", 20)); hs.add(new Student("lisi", 30)); hs.add(new Student("lisi01", 40)); hs.add(new Student("xiao", 50)); hs.add(new Student("xiao003", 50)); hs.add(new Student("xiao001", 50)); Iterator<Student> iterator = hs.iterator(); while(iterator.hasNext()){ Student p = iterator.next(); System.out.println(p.getName()+" "+p.getAge()); } } }
相关文章推荐
- 监理工程师岁月--农村飞出来的金凤凰
- CF div2 332 B
- 异常处理机制
- Android 中的adapter和作用以及常见的adapter
- opencv3中FLANN结合SURF进行关键点的描述和匹配
- 「喵神成长史」『四大元首』Activity(活动)
- ECMAScript——引用数据类型之操作语句
- Spring+Log4j+ActiveMQ实现远程记录日志——实战+分析
- 010--VS2013 C++ 平面地图贴图
- Android Activity转场动画
- 正则表达式在iOS中的运用
- 练习--LINUX进程间通信之信号SIGNAL
- java switch语句详解
- cmake脚本编写
- ckfinder2.5 破解
- 【离散数学实验】Dijkstra算法求指定两点间的距离
- 程序的性能优化之代码上的细节优化
- 判断java虚拟机内存里的对象已死两种方式
- ECMAScript——引用数据类型之function关于call和apply
- Longest Substring Without Repeat Characters