首页 > 编程语言 > 详细

Java集合Set及HashSet以及TreeSet

时间:2021-02-23 17:35:26      阅读:26      评论:0      收藏:0      [点我收藏+]

1.set子接口

特点“无下标、无序、不可重复。

2.实现set

set是一个接口 所以不能使用new Set

new的时候需要使用到set的两个实现类 hashSet、TreeSet

技术分享图片

 

 

3.HashSet存储原理:

利用Object类里面的hashcode方法计算hash值。

如果hash值相等的话,在进行equals方法的调用,如果返回为true则不给予存入。

(比如说你有一个celebrity类 就可以重写equals方法。比如存入两个  刘德华,20岁  看成一个人 不允许存入2个)

(同时呢 我们根据存储步骤 先hashCode 再equals 。也可以重写hashCode方法)

底层是哈希表(拉链法,也就是数组+链表)

技术分享图片

 

 

 

4.为什么要重写HashCode() equals()方法

 

 

5.TreeSet

基于红黑树实现

如果要使用自定义的类 必须时间comparable接口(因为是有序的 所以必须能相互比较)

(1)comparable接口是一个函数式接口 必须实现里面的compareTo方法(返回值为0 证明是重复元素)

(2)或者在声明treeSet时,显式定义比较器Comparator

技术分享图片

 

 默认比较器的原理是升序的,返回的是2个比较对象的ASCII码的差值。

如果相等返回0 a比b大返回正数a-b的ASCII码差值 a比b小的话返回a-b的负数差值。

(如果你要倒序的 可以将上面的正负返回值倒过来)

技术分享图片

 

 技术分享图片

 

 

技术分享图片

 

Java集合Set及HashSet以及TreeSet

原文:https://www.cnblogs.com/cckong/p/14437169.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!