学习目标:

提示:1,掌握TreeSet类概述


学习内容:

TreeSet类 1. TreeSet: 元素唯一,且元素的顺序可以按照某种规则进行排序

    排序的方式有两种:自然排序比较器排序TreeSet的俩个特点:排序和唯一
public class TreeSetDemo {public static void main(String[] args) {//创建集合对象//构造一个新的,空的树组,根据其元素的自然排序进行排序//无参构造内部元素默认是自然排序TreeSet<Integer> ts = new TreeSet<>();//创建对象ts.add(20);ts.add(18);ts.add(23);ts.add(22);ts.add(17);ts.add(24);ts.add(19);ts.add(18);ts.add(24);//遍历for (Integer t:ts){System.out.println(t);}}
}
  1. TreeSet集合存储自定义对象并保证排序和唯一

    1、如果什么都没告诉我们排序规则,是什么排序?
    自然排序,按照年龄从大到小进行排序
    2、元素什么什么情况下才算唯一呢?
    成员变量的值都相同的情况算唯一的,就是同一个元素

import java.util.TreeSet;public class TreeSetDemo2 {public static void main(String[] args) {//创建集合对象TreeSet<Student> s = new TreeSet<>();//创建几个学生对象Student s1 = new Student("李元浩", 24);Student s2 = new Student("李相赫", 27);Student s3 = new Student("乌兹", 25);Student s4 = new Student("厂长", 21);Student s5 = new Student("刘青松", 24);Student s6 = new Student("硬币哥", 28);Student s7 = new Student("姿态", 25);//将学生对象添加到集合中s.add(s1);s.add(s2);s.add(s3);s.add(s4);s.add(s5);s.add(s6);s.add(s7);for (Student S:s){System.out.println(S.getName()+"*****************"+S.getAge());}}
}
import java.util.Objects;
public class Student implements Comparable<Student> {private String name;private int age;public Student() {}public Student(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;}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", age=" + age +'}';}@Overridepublic int compareTo(Student o) {//        return 0;int i = this.age - o.age;int i2 =i ==0?this.name.compareTo(o.name):i;//三目运算符return i2;}//    @Override
//    public int compareTo(Object o) {        return 0;
        return 1;
        return -1;
//
//        //这里返回什么,其实应该是根据我的规则来进行排序
//        //我们明确知道是按照年龄的大小,从大到小排序
//        //在分析的时候,要注意什么是主要条件,什么是次要条件,缺一不可
//
//
//
//    }
}
  1. 需求:使用TreeSet存储自定义对象,根据姓名的长度来排序
import java.util.TreeSet;/*需求:使用TreeSet存储自定义对象,根据姓名的长度来排序*/
public class TreeSetDemo3 {public static void main(String[] args) {//创建集合对象TreeSet<Student2> students = new TreeSet<Student2>();//创建学生对象Student2 s1 = new Student2("chenjunrong", 18);Student2 s2 = new Student2("zhudan", 19);Student2 s3 = new Student2("chuying", 18);Student2 s4 = new Student2("liuzilong", 20);Student2 s5 = new Student2("guoyuming", 16);Student2 s6 = new Student2("xiatin", 19);Student2 s7 = new Student2("liuzilong", 22);//将学生对象插入到集合中students.add(s1);students.add(s2);students.add(s3);students.add(s4);students.add(s5);students.add(s6);students.add(s7);//遍历for (Student2 student : students) {System.out.println(student.getName() + "---" + student.getAge());}}
}
public class Student3 implements Comparable<Student3> {private String name;private int age;public Student3() {}public Student3(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;}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", age=" + age +'}';}@Overridepublic int compareTo(Student3 o) {int i = this.name.length() - o.name.length();//姓名的长度相同不代表内容也相同int i2=i ==0 ? this.name.compareTo(o.name):i;//姓名的长度和内容都一样,但是年龄可能不一样int i3 =i2 ==0? this.age -o.age :i2;return i3;}
}

day19TreeSet类相关推荐

  1. 自己搜集编写的Delphi 通用函数

    { ********************************************************************** } { Currency Common Functio ...

  2. 继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错? springboot 两种方式稳定解决跨域问题

    继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错???springboot 两种方式稳定解决跨域问题! 之前我写了一篇文章,来解决CORS报错 ...

  3. MybatisPlus忽略实体类中的非数据库字段、JPA忽略实体类中的非数据库字段、HeHibernate忽略实体类中的非数据库字段

    mybatis plus忽略映射字段时可以在实体类属性上使用以下注解: @TableField(exist = false):表示该属性不为数据库表字段,但又是必须使用的. @TableField(e ...

  4. IDEA中根据数据库自动生成实体类,并自定义所生成的实体类中的注解 @Table @Id @...

    使用IDEA项目添加Hibernate扩展,生成实体类并配置实体类中的注解 一.使用Hibernate自动生成实体类 1.在项目上右键,选择Add Framework Support找到 Hibern ...

  5. IDEA自动生成类注解,IDEA作者信息自动生成,IDEA类信息自动生成

    在新建类文件的时候自动生成注解,诸如我们常见的那些 作者,创建时间,TODO 等等 将以下格式的代码放在Settings -> File and Code Templates -> Inc ...

  6. javabean实体类与实体类之间的快速转换

    一.Dozer是什么? dozer是一个能把实体和实体之间进行转换的工具.只要建立好映射关系.就像是ORM的数据库和实体映射一样. 使用方法示例如下: // article(PO) -> art ...

  7. 利用dom4j将实体类转换为对应的xml报文

    利用dom4j生成xml报文 目标格式: <?xml version="1.0" encoding="GBK"?><Packet type=& ...

  8. Idea groovy表生成实体类带注释

    Idea groovy表生成实体类带注释 1.点开datasourse,打开idea带的数据库工具,具体添加数据库连接,这里不描述. 这时点击会生成一个poji 这时生成的pojo中是不带中文注释的, ...

  9. java带参数的方法笔记_具有Java参数的方法的类声明

    类声明可以包含在Java中具有参数的方法.演示此过程的程序如下: 示例class Message { public void messagePrint(String msg) { System.out ...

最新文章

  1. 一个会“说话”的油箱盖,告诉你每一滴油的去向
  2. 心玮医疗发布75万股权回购计划 用于招揽和激励员工等
  3. 寻找素数分配线程算法
  4. 有史以来最强的 5G 入门科普!
  5. 获取Linux服务器信息脚本
  6. RTKLIB之RTCM解析
  7. adobe premiere 不支持的视频驱动程序
  8. 关于Linux运行steam的解决方案
  9. mongo数据库索引原理
  10. android直播sdk+美颜,短视频SDK,美颜SDK,直播SDK_提供开放API接口
  11. Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.17:test (default-test) on pr
  12. win10的linux内核版本,微软决定在Windows10中发布一个完整的Linux内核
  13. python 的基础 学习第十天函数的初始
  14. 普通浏览器打开微信页面出现验证的解决方法
  15. 7种超轻量级的Linux发行版,希望能够帮助你找到适合自己的操作系统
  16. 百度网盘下载显示系统限制,无法下载解决
  17. Jmeter测试最大在线用户数
  18. tcping : ping ip地址+端口号
  19. 终年32岁的传奇数学家,为何让硅谷领袖们集体落泪致敬?
  20. 无人驾驶小车调试笔记(七)-- 相机校准

热门文章

  1. Linux下execl函数与execlp函数的具体详细用法
  2. 用Vue实现腾讯新闻页面
  3. 百度直播iOS SDK平台化输出改造
  4. 数字图像处理(第三版)绪论笔记
  5. unity弹珠游戏-虚拟现实期末大作业(附下载链接)
  6. C语言中关于位域的介绍
  7. js 快速找出两个数组中的不同元素或对象
  8. 解决移动硬盘不能弹出问题
  9. 壳聚苯乙烯/单分散核-壳结构/中空/介孔二氧化硅微球的研究
  10. CCF A类与B类的国际期刊(高性能计算、人工智能)