day19TreeSet类
学习目标:
提示: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);}}
}
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;
//
// //这里返回什么,其实应该是根据我的规则来进行排序
// //我们明确知道是按照年龄的大小,从大到小排序
// //在分析的时候,要注意什么是主要条件,什么是次要条件,缺一不可
//
//
//
// }
}
- 需求:使用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类相关推荐
- 自己搜集编写的Delphi 通用函数
{ ********************************************************************** } { Currency Common Functio ...
- 继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错? springboot 两种方式稳定解决跨域问题
继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错???springboot 两种方式稳定解决跨域问题! 之前我写了一篇文章,来解决CORS报错 ...
- MybatisPlus忽略实体类中的非数据库字段、JPA忽略实体类中的非数据库字段、HeHibernate忽略实体类中的非数据库字段
mybatis plus忽略映射字段时可以在实体类属性上使用以下注解: @TableField(exist = false):表示该属性不为数据库表字段,但又是必须使用的. @TableField(e ...
- IDEA中根据数据库自动生成实体类,并自定义所生成的实体类中的注解 @Table @Id @...
使用IDEA项目添加Hibernate扩展,生成实体类并配置实体类中的注解 一.使用Hibernate自动生成实体类 1.在项目上右键,选择Add Framework Support找到 Hibern ...
- IDEA自动生成类注解,IDEA作者信息自动生成,IDEA类信息自动生成
在新建类文件的时候自动生成注解,诸如我们常见的那些 作者,创建时间,TODO 等等 将以下格式的代码放在Settings -> File and Code Templates -> Inc ...
- javabean实体类与实体类之间的快速转换
一.Dozer是什么? dozer是一个能把实体和实体之间进行转换的工具.只要建立好映射关系.就像是ORM的数据库和实体映射一样. 使用方法示例如下: // article(PO) -> art ...
- 利用dom4j将实体类转换为对应的xml报文
利用dom4j生成xml报文 目标格式: <?xml version="1.0" encoding="GBK"?><Packet type=& ...
- Idea groovy表生成实体类带注释
Idea groovy表生成实体类带注释 1.点开datasourse,打开idea带的数据库工具,具体添加数据库连接,这里不描述. 这时点击会生成一个poji 这时生成的pojo中是不带中文注释的, ...
- java带参数的方法笔记_具有Java参数的方法的类声明
类声明可以包含在Java中具有参数的方法.演示此过程的程序如下: 示例class Message { public void messagePrint(String msg) { System.out ...
最新文章
- 一个会“说话”的油箱盖,告诉你每一滴油的去向
- 心玮医疗发布75万股权回购计划 用于招揽和激励员工等
- 寻找素数分配线程算法
- 有史以来最强的 5G 入门科普!
- 获取Linux服务器信息脚本
- RTKLIB之RTCM解析
- adobe premiere 不支持的视频驱动程序
- 关于Linux运行steam的解决方案
- mongo数据库索引原理
- android直播sdk+美颜,短视频SDK,美颜SDK,直播SDK_提供开放API接口
- Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.17:test (default-test) on pr
- win10的linux内核版本,微软决定在Windows10中发布一个完整的Linux内核
- python 的基础 学习第十天函数的初始
- 普通浏览器打开微信页面出现验证的解决方法
- 7种超轻量级的Linux发行版,希望能够帮助你找到适合自己的操作系统
- 百度网盘下载显示系统限制,无法下载解决
- Jmeter测试最大在线用户数
- tcping : ping ip地址+端口号
- 终年32岁的传奇数学家,为何让硅谷领袖们集体落泪致敬?
- 无人驾驶小车调试笔记(七)-- 相机校准