我们可以对Set集合中的元素进行排序。使用的是二叉树结构。如何保证元素唯一性的呢?使用的对象比较方法的结果是否为0,是0,视为相同元素不存。元素自身具备自然排序,其实就是实现了Comparable接口重写了compareTo方法。

有一个叫做Comparator的接口,并且TreeSet集合的接口允许我们给其传递这样一个接口的子类对象。其实就是在创建TreeSet集合时,在构造函数中指定具体的比较方式。需要定义一个类实现。只需要这个对象实现Comparable接口,并实现其中的compareTo方法即可。

创建对象

public class practice implements Comparable {private String name;private int age;public practice () {}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;}public practice ( String name, int age ) {this.name = name;this.age = age;}@Overridepublic String toString () {return "practice{" +"name='" + name + '\'' +", age=" + age +'}';}@Overridepublic int compareTo ( Object o ) {if (!(o instanceof practice)) {throw new ClassCastException("o is not a practice");}practice p = (practice) o;int res =  age - p.age;res = res != 0 ? res : name.compareTo(p.name);return res;}
}

进行储存

 public static void main ( String[] args ) {TreeSet set = new TreeSet();practice s1=new  practice("张三",22);practice s2=new  practice("王五",21);practice s3=new  practice("刘三",20);practice s4=new  practice("李四",24);set.add(s1);set.add(s2);set.add(s3);set.add(s4);System.out.println(set);}

输出结果

[practice{name='刘三', age=20},

practice{name='王五', age=21},

practice{name='张三', age=22},

practice{name='李四', age=24}]

Comparable的compareTo相关推荐

  1. comparable的compareTo( )方法

    就是说,如果你想对自己写的类排序,你就把自己写的这个类实现Comparable接口,然后写一个comparaTo方法来规定这个类的对象排序的顺序. 在这个方法中,如果返回-1,则当前对象排前面,返回1 ...

  2. Object的方法equals,hashCode,toString,clone。另外Comparable接口的方法

    1.equals 方法和hashCode 方法实现示例: public class EqualHashCodeTest {private boolean b;private int i;private ...

  3. java中Comparable实现对象的比较

    /* class A implements Comaprable<A>{ } 那么 A x = new A(); 类关系图 Object o = A; Object Comparable ...

  4. 使用Comparable、Comparator接口实现对对象数组、List集合自定义排序

    1.实现对象数组排序 (1)方法一,需要排序的对象所属的类实现Comparable接口,复写 comparaTo方法  (2)方法二,需要排序的对象所属的类已经完成无法实现Comparable接口,这 ...

  5. java comparable接口_浅谈程序接口

    · 为什么需要接口?接口和抽象类的区别? 接口就是比"抽象类"还"抽象"的"抽象类",可以更加规范的对子类进行约束.全面地专业地实现了:规范 ...

  6. compareto方法_Java ArrayList 的不同排序方法

    由于其功能性和灵活性,ArrayList是 Java 集合框架中使用最为普遍的集合类之一.ArrayList 是一种 List 实现,它的内部用一个动态数组来存储元素,因此 ArrayList 能够在 ...

  7. Comparable和Comparator接口时干什么的?列出它们的区别

    一.对Comparable 的解释 Comparable是一个排序接口 此接口给实现类提供了一个排序的方法,此接口有且只有一个方法 public int compareTo(T o); compare ...

  8. Comparable与Comparator异同

    刚学比较器的时候,一直不明白这两者的区别,也没有好好去琢磨过 准备考OCJP看到TreeSet时,上网查了下,也认真看了下API 总结出来一句: Comparable: 是用来定义一种类型的自然排序法 ...

  9. java compareto重写_Java 关于重写compareTo方法

    概述 "当一个类实现类Comparable接口,此类就可以跟很多泛型算法(generic algorithm) 以及依赖于该接口 的集合实现(Collection implementatio ...

最新文章

  1. iOS 一些基础的方法
  2. jsp与servlet之间页面跳转及参数传递实例
  3. Android开源框架——内存泄漏检测工具 LeakCanary
  4. android 电话 状态栏,Android透明式状态栏、导航栏实现
  5. Python---多任务介绍以及Thread的基本使用
  6. Android studio | From Zero To One —— Hello Android
  7. linux df和du常用命令
  8. 视觉SLAM笔记(48) 局部地图
  9. python爬虫代码-python网络爬虫源代码(可直接抓取图片)
  10. matlab 拟合函数 调用,matlab拟合函数
  11. linux sz命令详解,Linux rz和sz命令详解
  12. 芯片数据手册下载和阅读
  13. 打印时显示rpc服务器不可用,打印时出现RPC服务器不可用 ?
  14. Mybatis插入大量数据效率对比:foreach插入、SqlSession批量插入、sql插入
  15. 发那科2021参数_发那科参数
  16. DevExtreme UI框架在可视化应用程序Nvisual中的实践应用
  17. NLP中面向文本表示的模型梳理
  18. 中文乱码——编码问题
  19. 解决win10下localhost打不开的问题
  20. Excel同时按照书名号和顿号分列成3列数据的操作

热门文章

  1. 用镭神32线激光雷达实现A_LOAM LeGO_LOAM
  2. MQ100门座起重机 双螺旋输送机总装图 减速机图纸 自动圆式焊机总装图 VF6-7空气压缩机曲轴加工工艺及夹具设计 组合机床工艺设计 RV蜗轮蜗杆减速机 90度皮带机运载机器人设计……
  3. 读书系列2022(下)读书纪录片
  4. vc++ 调用winapi调节屏幕亮度
  5. 晟盾科技加入龙蜥社区,共建开源新生态
  6. Python基于time库对时间分钟等级进行运算
  7. innerHTML,outerHTML innerHTML
  8. Zephyr UART
  9. VS2015未定义标识符gets
  10. 安卓进入debug模式