Set集合

#Set集合

一、集合框架Set(HashSet哈希表存储、重复元素存储底层探究)
1.HashSet : jdk1.8以前是无序的,之后就是有序的
2.HashSet的底层数据结构是哈希表
3.确保元素唯一性的两个方法,hashCode()和equals()方法。
4.当调用add()方法向集合中存入对象的时候,先比较此对象与原有对象的哈希值有没有一样的,如果都不一样就直接存入;如果有与之相同的哈希值,则要继续比较这两个对象是否为同一个对象,此时就要调用对象的equals()方法了。

结论:只有HashCode的值相同的时候,才会调用equals()方法。

2、集合框架TreeSet(自然排序、数据结构二叉树、比较器排序
2.1、TreeSet自然排序
<TreeSet又称为红黑树>
TreeSet可以对set集合中元素进行排序
使得添加的元素自身具备排序规则,这种排序规则又被称为自然排序
比较器排序(Comparator):
作用:使得容器具有比较性
在这里插入图片描述

其他引用数据类型没有实现Comparable接口,那么会出现java.lang.ClassCastException: com.javaxl.Peroon cannot be cast to java.lang.Comparable,实现引用数据类型实现此接口就没问题了。


注意:排序时,当主要条件相同时,一定要判断次要条件


2.2、TreeSet数据结构(二叉树)
    1.可以对set集合进行排序,底层数据结构是二叉树;

    2.保证元素唯一性的依据是,compareTo方法return 0
	Comparable接口的用途?

使添加的元素自身具备排序规则,这种排序规则又被称为自然排序:

当给对象赋予自然排序规则的时候必须按照一下规则来,先判断主要条件,再判断次要条件 (先按年龄,再按姓氏)

在这里插入图片描述
可以对set集合进行排序,底层数据结构是二叉树;

保证元素唯一性的依据是,compareTo方法return 0

 

所以

注意:TreeSet排序的第一种方式,让元素自身具有比较性;

元素需要实现Comparable接口,覆盖compareTo方法;

这种方式也被称为元素的自然顺序,或者叫做默认顺序。






那么如何让TreeSet集合中的元素怎么存进去怎么取出来呢?

compareTo方法返回值为正数,返回值写死,那么就是怎么存进去怎么取出来。

compareTo方法返回值为负数数,返回值写死,那么就是先进后出。



TreeSet比较器排序


TreeSet排序的第二种方式

当元素自身不具备比较性时,或者具备的比较性不是所需要的;

 

注意:这时需要让集合自身具备比较性

在集合初始化时,就有了比较方式;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值