注:只贴出实现类

package Test3;

import java.util.Comparator;
import java.util.TreeSet;

public class Test {

public static void main(String[] args) {
Comparator com=new Comparator() {①创建一个Comparator接口的匿名内部类

@Override
public int compare(Object o1, Object o2) {②重写compare方法,定制排序的方法
if(o1 instanceof Employee && o2 instanceof Employee){
Employee e1=(Employee)o1;
Employee e2=(Employee)o2;
MyDate birth1=e1.getBirthday();
MyDate birth2=e2.getBirthday();
if(birth1.getYear()!=birth2.getYear()){
return birth1.getYear()-birth2.getYear();
}else{
if(birth1.getMonth()!=birth2.getMonth()){
return birth1.getMonth()-birth2.getMonth();
}else{
if(birth1.getDay()!=birth2.getDay()){
return birth1.getDay()-birth2.getDay();
}
}
}
}
return 0;
}

};
Employee e1=new Employee("胡",23,new MyDate(1992,10,27));
Employee e2=new Employee("赵",19,new MyDate(1996,10,27));
Employee e3=new Employee("钱",21,new MyDate(1994,10,27));
Employee e4=new Employee("孙",22,new MyDate(1993,10,27));
Employee e5=new Employee("李",20,new MyDate(1995,10,27));

TreeSet<Employee> set=new TreeSet<Employee>(com);③把实现Comparator接口的对象传递到TreeSet构造器
set.add(e1);
set.add(e2);
set.add(e3);
set.add(e4);
set.add(e5);

for(Employee e:set){
System.out.println(e);
}
}
}

转载于:https://www.cnblogs.com/BlogRegisterboby/p/5907622.html

Java TreeSet的定制排序相关推荐

  1. Java Set接口详细讲解 TreeSet的定制排序和自然排序

    Set接口概述 Set接口是Collection的子接口,set接口没有提供额外的方法 Set 集合不允许包含相同的元素,如果试把两个相同的元素加入同一个Set 集合中,则添加操作失败. Set 判断 ...

  2. TreeSet的定制排序

    方式1:在元素自身中定义排序规则 需要元素自身实现Comparable接口 /****TreeSet是一个有序集合,TreeSet中元素将按照升序排列,缺省是按照自然顺序进行排列,意味着TreeSet ...

  3. java TreeSet去重与排序入门

    TreeSet用途 相比于HashSet,放入TreeSet的数据是有序的.那么这种有序是如何实现的呢? TreeSet有序的原因 如下,插入的顺序是c d a,输出的时候是a c d,说明排序了.那 ...

  4. [转载] 比较器(Comparable和Comparator)、自然排序、定制排序

    参考链接: Java比较器接口与示例 写在前面: 我是「扬帆向海」,这个昵称来源于我的名字以及女朋友的名字.我热爱技术.热爱开源.热爱编程.技术是开源的.知识是共享的. 这博客是对自己学习的一点点总结 ...

  5. Day48(List接口,ArrayList,LinkedList,Vector,Set接口,HashSet,LinkedHashSet,TreeSet,自然排序,定制排序)

    Collection子接口之一:List接口 List接口概述 鉴于Java中数组用来存储数据的局限性,我们通常使用List替代数组 List集合类中元素有序.且可重复,集合中的每个元素都有其对应的顺 ...

  6. TreeSet的自然排序和定制排序

    只要放在TreeSet中的元素对象,在该对象的类中必须实现Comparable接口,必须覆盖该接口中的compareTo()方法,并在该方法中编写比较规则.(该方法不能自动生成) 自然排序(Compa ...

  7. Java基础-TreeSet与Java自定义类型的排序

    TreeSet与Java自定义类型的排序 演示TreeSet对String是可排序的 TreeSet无法对自定义类型进行排序 比较规则怎么写 自平衡二叉树结构 实现比较器接口 Collections工 ...

  8. java treeset排序_java TreeSet的排序之自然排序

    TreeSet会调用元素的compareTo(Object o)方法来比较元素之间的大小关系,然后将集合里的元素按升序排列.此时需要排序元素的类必须实现Compareble接口,并覆写其int com ...

  9. Java基础篇自然排序和定制排序

    排序目录 1. 自然排序 1.1 排序说明 1.2 基于Comparable 的实现样例 1.3 实现方式展示 2. 定制排序 2.1 排序说明 2.2 实现方式展示 说明 此篇文章是在学习到集合Tr ...

最新文章

  1. Openstack-L 路由注入方式
  2. Vivado HLS error: Cannot find ISE in the PATH variable or it's an unsupported version
  3. MyEclipse6.5配置反编译插件
  4. [Python技巧]是时候用 defaultdict 和 Counter 代替 dictionary 了
  5. 初始化linux-nginx的安装和使用
  6. macbook配置java环境变量_配置java环境变量
  7. logo是啥_logo是什么?
  8. java控制结构_Java 控制结构与方法
  9. 5款免费又好用的甘特图软件,总有一款适合你
  10. Linux 网易云API搭建笔记
  11. 汽车营销与保险【1】
  12. mysql5.0免安装版_MySql5.0免安装版配置
  13. 基于VUE和Node.js的医院挂号预约管理系统
  14. 设置jupyter notebook文件保存位置
  15. python为什么打不开py文件_python文件打不开如何解决
  16. R语言学习(六)——关联规则分析
  17. 机器学习——线性回归(拟合一条直线)
  18. word的奇葩功能--隐藏文字
  19. 海康大华宇视等等安防监控摄像头转成WebRTC流实现Web浏览器超低延迟无插件直播新方案...
  20. 网络(HCNA00笔记)

热门文章

  1. 晶闸管有几个pn结_晶闸管的电路符号和图片识别
  2. python3.7 pip安装_python3.7安装, 解决pip is configured with locations that require TLS/SSL问题...
  3. CCNA必会知识点:PAP单双向认证
  4. linux重点知识:网络通信
  5. 收藏 | 超详细的Oracle19c安装步骤
  6. 透过 3.0 Preview 看 Dubbo 的云原生变革
  7. android 活动外的类,Android – 活动外的startActivityForResult?
  8. tkinter使用MySQL存数据_我无法从tkinter表单向mysql插入数据
  9. netty tcp服务端主动断开客户端_「Netty核心技术」6-ChannelPipeline源码
  10. 混合索引_数据库面试题:查询在什么情况下不?索引-数据库知识点