教你使用Java中的Comparator比较器

一、知识点简述:

自定义比较器:
  • Comparator:比较器
  • Comparator是一个接口,无法直接创建对象,需要实现类去创建
创建Comparator的步骤:
  • 1.定义一个比较器的类,去实现Comparator接口
  • 2.实现compare方法,在compare方法中自定义比较的规则

二、案例题目及要求:

步骤:

  • 1.创建Person类,包含属性:身份证号、姓名、年龄;
  • 2.创建四个对象,把四个对象存入到list集合;
  • 3.对四个对象分别根据年龄和身份证号进行单独排序;

三、代码实现:

1.创建Person类

public class Person {private String IdCard;private String name;private int age;//get set方法public String getIdCard() {return IdCard;}public void setIdCard(String idCard) {IdCard = idCard;}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 Person(String idCard, String name, int age) {super();IdCard = idCard;this.name = name;this.age = age;}//重写toString方法@Overridepublic String toString() {return "Person [IdCard=" + IdCard + ", name=" + name + ", age=" + age + "]"+"\n";}//无参构造器public Person() {super();}

2.创建四个子类,分别继承Person类:

//学生类class Student extends Person{}//工人类class Worker extends Person{}//学者类class Scholar extends Person{}//小偷类class Thief extends Person{}

3.编写程序入口,分别创建以上四个类的对象,并赋值 :

//程序入口public static void main(String[] args) {//创建Student对象Person st = new Student();//赋值st.setName("火麟飞");st.setIdCard("621760388988");st.setAge(17);st.getName();st.getIdCard();st.getAge();//创建worker对象Person wk = new Worker();wk.setName("天羽");wk.setIdCard("821760388966");wk.setAge(21);wk.getName();wk.getIdCard();wk.getAge();//创建scholar对象Person sl = new Scholar();sl.setName("小胖墩");sl.setIdCard("421960386866");sl.setAge(18);wk.getName();wk.getIdCard();wk.getAge();//创建Thief对象Person tf = new Thief();tf.setName("夜凌云");tf.setIdCard("961860355899");tf.setAge(35);tf.getName();tf.getIdCard();tf.getAge();

4.创建List集合,将四个对象存进去:

//创建一个list集合ArrayList<Person> list = new ArrayList<Person>();//将四个对象存入到list集合list.add(st);list.add(wk);list.add(sl);list.add(tf);   System.out.println("排序前的结果为:\n"+list);System.out.println("==================================================");

5.自定义排序(根据年龄):

//根据年龄排序//创建比较器比较的对象ByAge ba = new ByAge();Collections.sort(list, ba);System.out.println("根据年龄排序后的结果为:\n"+list);System.out.println("==================================================");

5.1 根据年龄排序的方法:

//根据年龄排序class ByAge implements Comparator<Person>{@Overridepublic int compare(Person o1, Person o2) {return o1.getAge()-o2.getAge();}}

6.自定义根据身份证号排序:

//根据身份证号排序//创建比较器比较的对象ByIdCard bc = new ByIdCard();Collections.sort(list, bc);System.out.println("根据身份证号排序的结果为:\n"+list);

6.1 根据身份证号排序的方法:

//根据身份证号排序class ByIdCard implements Comparator<Person>{@Overridepublic int compare(Person o1, Person o2) {return  o1.getIdCard().compareTo(o2.getIdCard());}}

四、运行效果图:


今日分享就到这儿了,喜欢的朋友们可以私信我哟!

秒杀Java中的Comparator比较器相关推荐

  1. Java中Map集合如何理解(四)——精简

    目录 引言 概念 Map集合实现类 HashMap LinkedHashMap TreeMap 默认排序 自定义排序方式 常用API 遍历Map集合 键找值 键值对 Lambda表达式 结束语 引言 ...

  2. java中如何对汉字进行排序?

    前言:上一篇文章我们讲解了java中实现Comparator进行排序 和实现Comparable进行排序,我们分别举例根据学号和姓名降序排序,原文在这里:java中如何对对象排序?  ,不过在文章的最 ...

  3. Java中的集合---------Collections 类---集合的工具类 Comparator比较器

    Collections 2.1 常用功能 java.utils.Collections是集合工具类,用来对集合进行操作.部分方法如下: public static <T> boolean ...

  4. JAVA语言-比较器Comparator(java中Comparable和Comparator的区别)

    文章目录 一.什么是Comparator 二.Java compare方法和compareTo方法 三.java中Comparable和Comparator的区别 Comparator的例子 三.de ...

  5. Java 中 Comparable 和 Comparator 比较

    为什么80%的码农都做不了架构师?>>>    本文,先介绍Comparable 和Comparator两个接口,以及它们的差异:接着,通过示例,对它们的使用方法进行说明. Comp ...

  6. Java核心API -- 7(Iterator迭代器、Comparable、Comparator比较器)

    1. Iterator迭代器 所有Collection的实现类都实现了iterator方法,该方法返回一个Iterator接口类型的对象,用于实现对集合元素迭代的便利.在java.util包下. 1) ...

  7. java中自定义比较器_Java中的比较器:自定义规则!!!

    比较器 Java语言中的比较器分为两种: Comparable比较器:Comparable是排序接口:若一个类实现了Comparable接口,就意味着"该类支持排序".(作用在实体 ...

  8. java8 lambda 排序算法,Java8中排序算法比较器的三种写法(使用lambda表达式实现Comparator比较器)...

    在涉及到数组, 集合等这些地方经常会需要用到排序算法, 在Java中的Collections类中有sort方法, 除了需要传入一个Comparator比较器, 或者需要排序的类实现了Comparabl ...

  9. java中自然排序和比较器排序

    这里所说到的Java中的排序并不是指插入排序.希尔排序.归并排序等具体的排序算法.而是指执行这些排序算法时,比较两个对象"大小"的比较操作.我们很容易理解整型的 i>j 这样 ...

最新文章

  1. 再有人问你Netty是什么,就把这篇文章发给他
  2. Java中如何锁文件
  3. One-Dimensional Battle Ships CodeForces - 567D
  4. 以CSGO为例 分析不同网络延时下FPS游戏同步的实现
  5. 2.1.1Remove Duplicates from Sorted Arr
  6. jzoj6824-[2020.10.17提高组模拟]英雄联盟【期望】
  7. 爬虫神经网络_股市筛选和分析:在投资中使用网络爬虫,神经网络和回归分析...
  8. 关于scanf和的问题
  9. android屏幕录制鸿洋,Android之自定义View笔记(鸿洋)
  10. linux之ps命令
  11. 看完这篇,java遍历字符串列表
  12. html表格怎样传入数据类型,Echarts图表中pie类型tooltip中formatter函数传递的参数从哪里来?...
  13. 在注视之外:对于认知和认知发展研究,眼动追踪还能揭示什么?
  14. windows下的_vimrc设置
  15. 已更新 联通 电信 tiny模式
  16. 屏蔽微信分享到朋友圈等按钮
  17. MySQL——创建存储过程和函数
  18. 华硕ASUS VM591U内存条固态拆机安装教程
  19. 美国人初学Python100个代码题目之2
  20. 如何能成为一个更优秀的人

热门文章

  1. 解决SUMO 504报错问题
  2. 根据PE文件格式获取LoadLibraryA()
  3. 推荐一部日剧,很好笑
  4. JavaScript高级程序设计第三版.CHM【带实例】
  5. 乐团站位---Leetcode练习
  6. 【QQ红包】手机发抢不到的口令红包
  7. 烟台联通云服务器项目,烟台联通云服务器项目
  8. Vijos P1098 合唱队形题解
  9. NetSuite自定义子记录打印模板之坑
  10. linux中epoll原理,Linux下selectpollepoll的实现原理(一)