一.TreeSet类解析:

1.TreeSet是依靠TreeMap实现的。

2.TreeSet中不能有重复的元素,而且是有序排列的。

3.自定义的类要想实现排序,实现Comparable接口,重写compareTo()方法。或者在构造方法中传入一个比较器,这个比较器实现Comparator接口,重写compare()方法。

4.Comparator是在集合外部实现排序的。(Comparable是在集合内部实现排序的,大家可以搜一下)

                 5.对于java中自定义的类,TreeSet可以直接进行储存,因为像String、Integer等等这些类都实现了Comparable接口。

6.对于自定义类,如果没有排序方法,那么TreeSet中只能存入一个该类的对象。

二.Comparable和Comparator的实现:

Comparable:

public class Student implements Comparable{int score;String name;public Student(int score,String name){this.score = score;this.name = name;}// 返回负整数、零或正整数,根据此对象是小于、等于还是大于指定对象。public int compareTo(Object o) {Student s = (Student)o;return this.score-s.score;//升序   要是降序的话就把两个变量倒过来写。}public String toString(){return "姓名:"+this.name+"   成绩:"+this.score;}}

测试类:

打印:

Comparator:

public class Student{int score;String name;public Student(int score,String name){this.score = score;this.name = name;}public String toString(){return "姓名 :"+this.name+"    成绩 :"+this.score;}}
class ComparableStudent implements Comparator{public int compare(Object o1, Object o2) {Student s1 = (Student)o1;Student s2 = (Student)o2;return s1.score-s2.score;}
}

测试类:

打印:

菜鸟的学习之路(13) —TreeSet类的排序相关推荐

  1. typescript学习之路(四) —— ts类的继承(包含es5以及es6的类继承)

    上一文已经写了es5,es6等类的定义,所以本章主要写es5和es6的继承,由于es6的继承和ts的继承如出一辙,只是加了类型定义而已,所以ts的继承稍微写下,不会太详细. 文章目录 es5继承 原型 ...

  2. ZYNQ学习之路13.创建PetaLinux工程

    在前面的学习中,我们知道如何根据PetaLinux BSP设计去创建一个工程,现在,我们结合Vivado设计我们自己PetaLinux系统. 开发环境:Ubuntu16 64bit, PetaLinu ...

  3. TreeSet类的排序

    TreeSet支持两种排序方法:自然排序和定制排序.TreeSet默认采用自然排序. 1.自然排序 TreeSet会调用集合元素的compareTo(Object obj)方法来比较元素之间大小关系, ...

  4. 菜鸟的学习之路(12) —HashSet类详解

    一.HashSet类详解: HashSet类的底层是HaskMap实现的.存入HashSet的元素是有HashMap的key来保存的.而HashMap的值是一个Object对象. HashSet中是不 ...

  5. 菜鸟的学习之路(10) — LinkedList类

    一.认识LinkedList类: 实现的接口:Serializable,Cloneable,Iterable,Collection,Deque,List,Queue 父类:AbstractSequen ...

  6. 菜鸟的学习之路(7) — 包(package)、Object类和String类

    一.包(package): 1.包:用于将不同功能的类分门别类,放在不同的目录(包)下. 命名规范:一般采用自己在互联网上的域名称作为自己程序包的唯一前缀,且域名翻转,每个字母小写. 例如:bztc. ...

  7. 菜鸟的学习之路(9) — ArrayList类

    一.认识ArrayList: 1.ArrayList是一个动态的数组(集合),可以在生成后对其中的内容进行增删改.相对于Array(静态数组),使用更灵活,可以对其内容进行修改. 2.实现的接口是Co ...

  8. GO语言学习之路13

    2022/02/04package mainimport ("fmt""sort" )/*map是key-value数据结构,又称为字段或者关联数组,类似其他编 ...

  9. 爬虫|菜鸟的学习之路——爬取一本小说

    前言:本次爬取的是全书网的某一本小说并以.TXT格式下载到本地. 工具:python3 和 pycharm Python库:urllib.request 和 re 注意:python是用3以上的版本, ...

最新文章

  1. Microsoft Jet 数据库引擎找不到输入表或查询. 确定它是否存在如何解决
  2. 网狐框架分析八--web登录游戏大厅流程
  3. CSS text-indent 属性
  4. DBUtils使用详细示例(转载)
  5. JAVA面试题:你怎么设计一个消息队列?
  6. 一分钱解锁全网视频会员?加入团队还能月入百万?
  7. python输入的方式有几种_Python输入方式具体的三种实现方式
  8. 红旗7.0 rc1 版编辑开始菜单
  9. 最长上升子序列LIS 动态规划 二分查找算法
  10. 使用Nginx架设高性能流媒体服务器
  11. linux 循环小时,shell脚本日期遍历(按天按小时)
  12. 中华传统文化网页作业报告
  13. Qt5 QFileDialog中文英文交界处乱码问题
  14. 爬取豆瓣 TOP250 电影排行榜
  15. Omar Loves Candies
  16. Enable multi-tenancy on ironic
  17. 或再被“转手”,家乐福中国还能“攀”上哪座靠山?
  18. LDV7 语音识别模块使用方法
  19. c#网页设计 UI —登录注册界面
  20. 【FreeRTOS】11 软件定时器

热门文章

  1. Atom 和 Sublime Text 相比哪个好?
  2. 【Unity】第5章 3D坐标系和天空盒
  3. WCF存储图片到指定文件夹下
  4. LeetCode:Restore IP Addresses
  5. 源代码安装apache遇到的问题解决
  6. 无法识别的属性“decompressionEnabled”处理方法
  7. 【转】java字符串池和字符串堆内存分配
  8. 【数据科学系统学习】机器学习算法 # 西瓜书学习记录 [8] 支持向量机(二)...
  9. Linux知识汇总 (二)
  10. 在ASP.NET中基于Owin OAuth使用Client Credentials Grant授权发放Token