Day19 比较器 set

1.TreeSet

1.1概述

set特点 : 无序 不可重复,添加顺序和取出顺序不一定一致

TreeSet : 存进去的元素,会按照某个规则进行排序

数字 : 从小到大

字符串 : 每一位的ASCII
 日期 : 自然日期

1.2使用方式

2排序

2.1Comparable

 TreeSet为什么可以排序?
 因为添加的元素都实现了Comparable接口
  在向TreeSet中添加数据的时候,会自动调用该对象的compareTo()方法
所以 存储自定义类型的时候,如果要使用TreeSet 那么 必须实现Comparable接口

 

 因为添加的时候 会自动调用Comparable中的compareTo方法,需要实现类实现

 

 

2.2Comparator 

 比较器两种方式 : 
1 要添加的元素实现Comparable接口并覆写compareTo方法
 2 集合比较器 : Comparator比较器,元素自身不需要实现该接口
如果添加的元素不是我们自定义的类
1 假如该类有排序,但是不是我们想要的结果,比如Integer,默认升序
 但是我们想要降序 可以使用 Comparator
2 假如该类没有排序,没有实现Comparable,那么我们想要排序还是要使用Comparator
  因为类不是我们写的,所以我们无法更改人家的源码
 如果添加的元素是我们写的,那么想要排序 使用 Comparable ,这样如果不能满足其他用户的排序规则,
别人也可以使用 Comparator 进行更改
 当comparable和comparator同时存在,那么 comparator的优先级大于 comparable
 

2.3Collections 

List想要排序,元素必须实现Comparable接口
 如果没有实现 需要用 Comparator

 

 2.4练习题

3泛型 

3.1概述

 范型 : 类型检查,在编译时检查类型是否匹配 
 集合中 什么元素都能保存,太杂,优点就是可以保存任意类型的数据,缺点 就是操作起来必须先强制类型转换才行
否则因为多态,无法访问特有属性
 引入范型之后,那么该集合中就只能保存指定类型,优点 : 操作起来方便,缺点 : 只能保存指定的类型
 而结合实际操作,我们绝大部分都是用来保存统一类型的数据的
 范型 只能写引用类型,不能写基本类型
 使用大写字母表示 : A,B,C,D,E,F,......X,Y,Z 都是可以的,只不过是一个占位符而已
 但是还是要合理选择
?  表示不确定的类型
 T(Type) : 表示是一个具体的java类型
  E(Element) : 表示是元素的类型 (集合中保存的是元素)
 K , V 
如果说规定了泛型,但是没有传入泛型类型,那么 默认是Object

3.2使用

 

 在源码中使用E表示了范型

3.3自定义泛型

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值