Comparable的compareTo
我们可以对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相关推荐
- comparable的compareTo( )方法
就是说,如果你想对自己写的类排序,你就把自己写的这个类实现Comparable接口,然后写一个comparaTo方法来规定这个类的对象排序的顺序. 在这个方法中,如果返回-1,则当前对象排前面,返回1 ...
- Object的方法equals,hashCode,toString,clone。另外Comparable接口的方法
1.equals 方法和hashCode 方法实现示例: public class EqualHashCodeTest {private boolean b;private int i;private ...
- java中Comparable实现对象的比较
/* class A implements Comaprable<A>{ } 那么 A x = new A(); 类关系图 Object o = A; Object Comparable ...
- 使用Comparable、Comparator接口实现对对象数组、List集合自定义排序
1.实现对象数组排序 (1)方法一,需要排序的对象所属的类实现Comparable接口,复写 comparaTo方法 (2)方法二,需要排序的对象所属的类已经完成无法实现Comparable接口,这 ...
- java comparable接口_浅谈程序接口
· 为什么需要接口?接口和抽象类的区别? 接口就是比"抽象类"还"抽象"的"抽象类",可以更加规范的对子类进行约束.全面地专业地实现了:规范 ...
- compareto方法_Java ArrayList 的不同排序方法
由于其功能性和灵活性,ArrayList是 Java 集合框架中使用最为普遍的集合类之一.ArrayList 是一种 List 实现,它的内部用一个动态数组来存储元素,因此 ArrayList 能够在 ...
- Comparable和Comparator接口时干什么的?列出它们的区别
一.对Comparable 的解释 Comparable是一个排序接口 此接口给实现类提供了一个排序的方法,此接口有且只有一个方法 public int compareTo(T o); compare ...
- Comparable与Comparator异同
刚学比较器的时候,一直不明白这两者的区别,也没有好好去琢磨过 准备考OCJP看到TreeSet时,上网查了下,也认真看了下API 总结出来一句: Comparable: 是用来定义一种类型的自然排序法 ...
- java compareto重写_Java 关于重写compareTo方法
概述 "当一个类实现类Comparable接口,此类就可以跟很多泛型算法(generic algorithm) 以及依赖于该接口 的集合实现(Collection implementatio ...
最新文章
- iOS 一些基础的方法
- jsp与servlet之间页面跳转及参数传递实例
- Android开源框架——内存泄漏检测工具 LeakCanary
- android 电话 状态栏,Android透明式状态栏、导航栏实现
- Python---多任务介绍以及Thread的基本使用
- Android studio | From Zero To One —— Hello Android
- linux df和du常用命令
- 视觉SLAM笔记(48) 局部地图
- python爬虫代码-python网络爬虫源代码(可直接抓取图片)
- matlab 拟合函数 调用,matlab拟合函数
- linux sz命令详解,Linux rz和sz命令详解
- 芯片数据手册下载和阅读
- 打印时显示rpc服务器不可用,打印时出现RPC服务器不可用 ?
- Mybatis插入大量数据效率对比:foreach插入、SqlSession批量插入、sql插入
- 发那科2021参数_发那科参数
- DevExtreme UI框架在可视化应用程序Nvisual中的实践应用
- NLP中面向文本表示的模型梳理
- 中文乱码——编码问题
- 解决win10下localhost打不开的问题
- Excel同时按照书名号和顿号分列成3列数据的操作
热门文章
- 用镭神32线激光雷达实现A_LOAM LeGO_LOAM
- MQ100门座起重机 双螺旋输送机总装图 减速机图纸 自动圆式焊机总装图 VF6-7空气压缩机曲轴加工工艺及夹具设计 组合机床工艺设计 RV蜗轮蜗杆减速机 90度皮带机运载机器人设计……
- 读书系列2022(下)读书纪录片
- vc++ 调用winapi调节屏幕亮度
- 晟盾科技加入龙蜥社区,共建开源新生态
- Python基于time库对时间分钟等级进行运算
- innerHTML,outerHTML innerHTML
- Zephyr UART
- VS2015未定义标识符gets
- 安卓进入debug模式