7.31笔记

7.31笔记

一、Set
List:

有序的,可重复的,可以根据索引使用

Set:

无序的(存储的顺序与内部真实存放的顺序不保证一致),去重的,不可以根据索引使用的

HashSet

TreeSet

Set:

不包含重复元素的集合

无新增方法

遍历方式:

foreach

iterator

二、TreeList:

无序的,去重的

底层结构:红黑树(平衡二叉树)

特点:自动做升序排序

应用场景:适合应用在想要对数据根据指定规则做升序|降序排序的情况下

新增方法:新增了以下比较大小的方法

遍历方式:

foreach

itreator()

descendingIterator()

注意此时先不同步,不安全。

E ceiling(E e)返回此集合中大于或等于给定元素的最小元素,如果没有这样的元素,则null 。
​
System.*out*.println(set.ceiling(3.1));
E floor(E e)返回此集合中小于或等于给定元素的最大元素,如果没有这样的元素,则null 。
System.*out*.println(set.floor(3.1));
E first()返回此集合中当前的第一个(最低)元素。
System.*out*.println(set.first());
E last()返回此集合中当前的最后一个(最高)元素。
System.*out*.println(set.last());
E pollFirst()检索并删除第一个(最低)元素,如果此集合为空,则返回null 。
System.*out*.println(set.pollFirst());
E pollLast()检索并删除最后一个(最高)元素,如果此集合为空,则返回null 。
System.*out*.println(set);
E higher(E e)返回此集合中严格大于给定元素的最小元素,如果没有这样的元素,则null 。
System.*out*.println(set.higher(3.1));
E lower(E e)返回此集合中严格小于给定元素的最大元素,如果没有这样的元素,则null 。
System.*out*.println(set.lower(3.1));
三、比较规则

使用TreeSet存储自定义的员工数据,测试实现去重排序

要求存储的类型实现比较规则(内部|外部),如果没有实现,遇到类型转换异常ClassCastException

去重与排序:都只根据调用的比较规则决定

如何定义比较规则:

1.内部比较器|自然排序|默认比较规则:

要比较的类型实现Comparable接口,重写compare(To)方法,方法的内部定义比较规则

2.外部比较器|定制排序|自定义比较规则:

实现类实现Comparator<T>接口,重写compare(To1,To 2)方法,方法的内部定义比较规则

定义员工类的比较规则 : 一般员工都是根据员工编号做升序排序

x.compareTo(y)

返回值 : 根据返回值决定比较的两个对象的大小

=0 x=y

<0 x<y

0 x>y

四、HashSet

无序的,去重的,不能根据索引使用的

底层是由HashMap维护的

底层结构:哈希表(jdk1.7及之前:数组+链表 jdk1.8及之后:数组+链表+红黑树)

特点:查询增删效率都高

应用场景:适合应用在大量做查询增删的需求下

去重:一般结合业务都想要根据对象的内容做去重

在对象类型中根据内容重写HashCode与equals方法

注意:前提在根据内容重写HashCode与equals方法之后:

HashCode相等,equals不一定相等

equals相等,HashCode一定相等

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值