【TreeSet集合】比较器排序Comparator的使用

news/2025/2/1 15:55:29/

比较器排序Comparator的使用

  • 存储学生对象并遍历,创建TreeSet集合使用带参构造方法

  • 要求:按照年龄从小到大排序,年龄相同时,按照姓名的字母顺序排序

    创建学生类:

    package com.gather.set.treeset;
    public class Student1 {private String name;private int age;public Student1() {}public Student1(String name, int age) {this.name = name;this.age = age;}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;}
    }
    

    测试类:

    package com.gather.set.treeset;
    import java.util.Comparator;
    import java.util.TreeSet;
    public class TreeSetDemo03 {public static void main(String[] args) {TreeSet<Student1> ts = new TreeSet<Student1>(new Comparator<Student1>() {  //传递比较器接口@Overridepublic int compare(Student1 s1, Student1 s2) {int num = s1.getAge() - s2.getAge();//调方法访问成员变量值int num2 = num == 0 ? s1.getName().compareTo(s2.getName()) : num;return num2;}});Student1 s1 = new Student1("xishi", 29);Student1 s2 = new Student1("wangzhaojun", 28);Student1 s3 = new Student1("diaochan", 30);Student1 s4 = new Student1("yangyuhuan", 33);Student1 s5 = new Student1("lisi", 33);//把学生添加到集合ts.add(s1);ts.add(s2);ts.add(s3);ts.add(s4);ts.add(s5);//遍历for (Student1 s : ts) {System.out.println(s.getName() + "," + s.getAge());}}
    }
    

在这里插入图片描述

使用比较器进行排序在创建TreeSet集合时要传递Comparator的实现类对象,重写compare()方法,根据返回值进行排序。在compare方法体里面使用对象调方法访问成员变量比较年龄是否相同(返回值为0),不能直接访问私有成员变量。当年龄相同时按照姓名的字母进行排序,如果不相同就直接按照年龄升序返回。

  • 两种比较方式总结
    • 自然排序:自定义类要实现Comparatable接口,重写comparaTo方法,根据返回值进行排序
    • 比较器排序:创建TreeSet集合时要传递Comparator的实现类对象,重写compare(T o1,T o2)方法,根据返回值进行排序

注意:在重写方法时,一定要注意排序规则必须按照要求的主要条件和次要条件来写


http://www.ppmy.cn/news/186693.html

相关文章

PD QC充电器XP06诱骗取电9V 12V 15V 20V原理

我们都知道TYPE-C口的PD充电器或者USB-A口的QC充电器默认都是只有5V输出电压&#xff0c;要想让它输出9V以上电压&#xff0c;就需要在产品端加上快充协议取电电路。 比如小家电产品要用PD或QC充电器提供9V供电&#xff0c;可以在产品的USB输入端加入一个芯片写入快充诱骗取电协…

充电器类型

充电器类型的识别通过PMIC上的寄存器来识别&#xff0c;现通过PMI8952为例 reference&#xff1a; 80-NT391-2X_PMI8952 Hardware Register Description 用于识别充电类型的寄存器地址是0x00001608 SMBCHGL_MISC_IDEV_STS, 如下图 reg value Read type Insert type 0x…

立创开源|18650锂电池四路充电器

该工程为18650四路电池充电器&#xff0c;支持DC、Micro-USB、USB-typec输入&#xff0c;同时四路充电。 充电芯片采用价格便宜的TP4056&#xff0c;电池盒采用直插电池盒。 每节电池充电电流为1A&#xff0c;由于电流较大&#xff0c;使用MicroUSB或USB-C充电时不建议同时充超…

华强北!强!苹果MagSafe遭破解 未来价格更划算的充电器将抵

据悉&#xff0c;在iPhone12上市之前&#xff0c;华强北就已经提前分发了新机的防护配件&#xff0c;比苹果官方发布的时间要早得多。随着苹果手机秋季更新换代&#xff0c;消费者争相购买的火爆场面再次出现&#xff0c;手机周边产品丰富的深圳华强北也出现订单激增。 其实每当…

充电器pps功能是什么_什么是智能充电器?

展开全部 智能62616964757a686964616fe59b9ee7ad9431333431356136充电器是通用型智能充电器。能够针对每一种电池的特性给出不同的充电模式以及相应的算法&#xff0c;以达到最佳的充电效果。 可充电电池具有较高的性能价格比、放电电流大、寿命长等特点&#xff0c;广泛应用于…

转 充电器

充电器&#xff0c;英文名称Charger。通常指的是一种将交流电转换为低压直流电的设备。充电器在各个领域用途广泛&#xff0c;特别是在生活领域被广泛用于手机、相机等等常见电器。 充电器是采用电力电子半导体器件&#xff0c;将电压和频率固定不变的交流电变换为直流电的一种…

TP5100(2A开关降压 8.4V/4.2V锂电池 充电器芯片)

1.概述 TP5100是一款开关降压型双节8.4V/单节4.2V锂电池充电管理芯片。其QFN16超小型封装 与简单的外围电路&#xff0c;使得TP5100非常适用于便携式设备的大电流充电管理应用。同时&#xff0c;TP5100 内置输入过流、欠压保护、芯片过温保护、短路保护、电池温度监控。 TP…

充电器充满变灯电路图(五款充电器充满变灯指示电路详细)一般充电器的工作原理是稳压限流。根据检测到的充电电流变化来实现红转绿的,不同容量的蓄电池所要设定转灯的电流值不同

充电器充满变灯电路图&#xff08;一&#xff09; 电路原理图&#xff1a; 输入直流电压高于所充电池电压3伏即可。R1、Q1、W1、TL431组成精密可调稳压电路&#xff0c;Q2、W2、R2构成可调恒流电路&#xff0c;Q3、R3、R4、R5、LED为充电指示电路。随着被充电池电压的上升&…