菜鸟的学习之路(13) —TreeSet类的排序
一.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类的排序相关推荐
- typescript学习之路(四) —— ts类的继承(包含es5以及es6的类继承)
上一文已经写了es5,es6等类的定义,所以本章主要写es5和es6的继承,由于es6的继承和ts的继承如出一辙,只是加了类型定义而已,所以ts的继承稍微写下,不会太详细. 文章目录 es5继承 原型 ...
- ZYNQ学习之路13.创建PetaLinux工程
在前面的学习中,我们知道如何根据PetaLinux BSP设计去创建一个工程,现在,我们结合Vivado设计我们自己PetaLinux系统. 开发环境:Ubuntu16 64bit, PetaLinu ...
- TreeSet类的排序
TreeSet支持两种排序方法:自然排序和定制排序.TreeSet默认采用自然排序. 1.自然排序 TreeSet会调用集合元素的compareTo(Object obj)方法来比较元素之间大小关系, ...
- 菜鸟的学习之路(12) —HashSet类详解
一.HashSet类详解: HashSet类的底层是HaskMap实现的.存入HashSet的元素是有HashMap的key来保存的.而HashMap的值是一个Object对象. HashSet中是不 ...
- 菜鸟的学习之路(10) — LinkedList类
一.认识LinkedList类: 实现的接口:Serializable,Cloneable,Iterable,Collection,Deque,List,Queue 父类:AbstractSequen ...
- 菜鸟的学习之路(7) — 包(package)、Object类和String类
一.包(package): 1.包:用于将不同功能的类分门别类,放在不同的目录(包)下. 命名规范:一般采用自己在互联网上的域名称作为自己程序包的唯一前缀,且域名翻转,每个字母小写. 例如:bztc. ...
- 菜鸟的学习之路(9) — ArrayList类
一.认识ArrayList: 1.ArrayList是一个动态的数组(集合),可以在生成后对其中的内容进行增删改.相对于Array(静态数组),使用更灵活,可以对其内容进行修改. 2.实现的接口是Co ...
- GO语言学习之路13
2022/02/04package mainimport ("fmt""sort" )/*map是key-value数据结构,又称为字段或者关联数组,类似其他编 ...
- 爬虫|菜鸟的学习之路——爬取一本小说
前言:本次爬取的是全书网的某一本小说并以.TXT格式下载到本地. 工具:python3 和 pycharm Python库:urllib.request 和 re 注意:python是用3以上的版本, ...
最新文章
- Microsoft Jet 数据库引擎找不到输入表或查询. 确定它是否存在如何解决
- 网狐框架分析八--web登录游戏大厅流程
- CSS text-indent 属性
- DBUtils使用详细示例(转载)
- JAVA面试题:你怎么设计一个消息队列?
- 一分钱解锁全网视频会员?加入团队还能月入百万?
- python输入的方式有几种_Python输入方式具体的三种实现方式
- 红旗7.0 rc1 版编辑开始菜单
- 最长上升子序列LIS 动态规划 二分查找算法
- 使用Nginx架设高性能流媒体服务器
- linux 循环小时,shell脚本日期遍历(按天按小时)
- 中华传统文化网页作业报告
- Qt5 QFileDialog中文英文交界处乱码问题
- 爬取豆瓣 TOP250 电影排行榜
- Omar Loves Candies
- Enable multi-tenancy on ironic
- 或再被“转手”,家乐福中国还能“攀”上哪座靠山?
- LDV7 语音识别模块使用方法
- c#网页设计 UI —登录注册界面
- 【FreeRTOS】11 软件定时器
热门文章
- Atom 和 Sublime Text 相比哪个好?
- 【Unity】第5章 3D坐标系和天空盒
- WCF存储图片到指定文件夹下
- LeetCode:Restore IP Addresses
- 源代码安装apache遇到的问题解决
- 无法识别的属性“decompressionEnabled”处理方法
- 【转】java字符串池和字符串堆内存分配
- 【数据科学系统学习】机器学习算法 # 西瓜书学习记录 [8] 支持向量机(二)...
- Linux知识汇总 (二)
- 在ASP.NET中基于Owin OAuth使用Client Credentials Grant授权发放Token