比较器Comparable(内部比较器)和Comparator(外部比较器)
比较器Comparable(内部比较器)和Comparator(外部比较器)
1.使用Comparable是从实体类中直接继承Comparable接口,并且重写compareTo方法。
2.使用Comparator是建立一个外部类(继承Comparator接口,重写compare方法),在排序时,调用这个外部类,不需要改变之前的实体类
上代码:
内部比较器:
package comparator;public class Person implements Comparable { //内部比较器private String name;private Integer age;private String sex;public Person(String name, Integer age, String sex) {this.name = name;this.age = age;this.sex = sex;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}@Overridepublic String toString() {return "Person{" +"name='" + name + '\'' +", age=" + age +", sex='" + sex + '\'' +'}';}@Overridepublic int compareTo(Object o) {Person p = (Person) o;int result = this.age>p.age? -1:(this.age==p.age?0:1); //降序排列return result;}
}
main中实现:
Person p1 = new Person("zs",12,"男");Person p2 = new Person("ls",15,"男");Person p3 = new Person("ww",10,"男");List<Person> list = new ArrayList<>();list.add(p1);list.add(p2);list.add(p3);Collections.sort(list);System.out.println(list);
结果:
外部比较器:
实体类:
package comparator;public class Student {private String name;private Integer age;private String sex;@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", age=" + age +", sex='" + sex + '\'' +'}';}public Student(String name, Integer age, String sex) {this.name = name;this.age = age;this.sex = sex;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}
}
调用的外部类:
package comparator;import java.util.Comparator;public class OutComparable implements Comparator {@Overridepublic int compare(Object o1, Object o2) {Student p1 = (Student) o1;Student p2 = (Student) o2;return p1.getAge()-p2.getAge();} //外部比较器
}
main方法:
Student s1 = new Student("zs",15,"女");Student s2 = new Student("zs",13,"女");Student s3 = new Student("zs",18,"女");List<Student> list1 = new ArrayList<>();list1.add(s1);list1.add(s2);list1.add(s3);Collections.sort(list1,new OutComparable());System.out.println(list1);
结果:
【注】
在内部排序中,三元表达式中,返回值-1,此元素要排在之前元素的前面,返回值0,两个元素并列,返回值1,此元素要排在之前元素的后面。
比较器Comparable(内部比较器)和Comparator(外部比较器)相关推荐
- JAVASE的内、外部比较器Comparable和Comparator
1.内部比较器,自定义实体类实现Comparable接口 /*** @author Nyotengu* @date 18/7/26 15:39*/ public class SortTest {/** ...
- 接口应用:内部比较器Comparable
接口应用:内部比较器Comparable public interface Comparable {public int compareTo(Object obj); } public class B ...
- java 比较器comparator_Java中比较器的使用Compare和Comparator
Comparable和Comparator接口都是为了对类进行比较,众所周知,诸如Integer,double等基本数据类型,java可以对他们进行比较,而对于类的比较,需要人工定义比较用到的字段比较 ...
- verilog——74HC85四位数值比较器并扩展为16位数值比较器
verilog--74HC85四位数值比较器并扩展为16位数值比较器 74HC85的仿真 设计思路 代码 设计模块 测试模块 仿真结果 扩展为16位比较器 设计思路 串行代码实现 设计模块 测试模块 ...
- 数电实验(四)利用集成数值比较器74LS85设计一个4位数值比较器
数电实验(四)利用集成数值比较器74LS85设计一个4位数值比较器 要求: 1.输入为两个4位二进制数,分别接四个逻辑电平开关,同时接数码管 2. 输出和LED相连 Multisim仿真:
- JavaSE——类集(下)(Set、Comparable、Collections、Comparator、Map)
第2节 集合(下) 一.Set接口 java.util.Set 接口和 java.util.List接口一样,同样继承自 Collection接口,它与Collection接口中的方法基本一致,并没有 ...
- const、static、内部链接属性和外部链接属性整理
2019独角兽企业重金招聘Python工程师标准>>> 说起const.static.以及#define大家都知道,我一直以为我也是知道的,昨天一同学说他面试时被问到#define定 ...
- 小米手机60帧录屏_手机录屏怎样只录手机内部声音不录入外部声音?教你三种方法,一定能帮到你...
随着Android系统不断迭代升级,手机截图长截图.手机录屏都成为了每部手机的标配,现在的手机都会有这几个功能! 但是经常使用录屏功能的小伙伴可能会遇到一些问题,比如录屏录制声音时,会将周围环境中的噪 ...
- 计算机内部总线和外部总线,科学网-怎样将计算机内部总线扩展为外部网络?-姜咏江的博文...
怎样将计算机内部总线扩展为外部网络? 姜咏江 透明计算公示成果的第一条就是"将原来计算机的内部总线扩展为外部网络".现在我们来谈谈能不能将计算机内部总线扩展成外部网络. 1.什么是 ...
最新文章
- PIC单片机学习之独立按键
- Android Studio 第四十九期 - Sqlite数据库四种写法
- SQL2000输入的值与数据类型不一致,或者此值与列的长度不一致“
- 单源最短路径(spfa)
- python画方波_numpy绘制方波及方波无穷级数的表示
- 找回root密码--Mysql5.6.36
- anaconda中怎么sh_【好工具】 深度学习炼丹,你怎么能少了这款工具!JupyterLab 远程访问指南...
- 【力扣】NO.7.整数反转
- hdmi tv 信息 的edid_开发HDMI你需要了解什么
- hdu-acm steps 命运
- 卡方分布分位数_数理统计第五讲(三大分布)
- JAR 文件规范详解
- FastAPI 是什么?
- 如何用阿里云云盘快照恢复部分数据
- LC-恢复二叉搜索树(JavaScript实现)
- Flutter事件分发
- leetcode-1833. 雪糕的最大数量(排序+贪心)
- 云服务器liunx系统怎么安装,云服务器怎么安装linux系统
- 今天感受了一下ipad
- 基于STM32F103,SPI驱动GC9306屏幕