集合框架Set

HashSet哈希表存储、重复元素存储底层探究

元素是无序(存入和取出的顺序不一定一致),元素不可以重复;(jdk1.7/jdk1.8是有序的)
查看Api会发现,set集合的功能与Collection集合的功能是一致的(就方法调用而言);
HashSet哈希表存储,底层数据结构是哈希表。
从代码上看,equals方法没有被调用
是因为HashSet集合存储是先调用hashCode方法,这里我们将hashCode方法重写一下看看
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
HashSet是如何保证元素唯一性的呢?
是通过元素的两个方法:hashCode与equals方法来完成;
如果hashCode值相同,才会判断equals是否为true;
如果hashCode值不同,那么不会调用equals。
注意:对于判断元素是否存在,以及删除等操作,依赖的方法同样是hashCode、equals方法。

集合框架TreeSet

自然排序 and 比较器排序

TreeSet可以对set集合中元素进行排序
String实现了Comparable接口,所以可以直接进行排序
引用数据类型想要排序,必须实现Comparable接口
其他引用数据类型没有实现Comparable接口,
那么会出现java.lang.ClassCastException: com.javaxl.Peroon cannot be cast to java.lang.Comparable,
实现引用数据类型实现此接口就没问题了。
注意:排序时,当主要条件相同时,一定要判断次要条件

TreeSet排序的第二种方式
当元素自身不具备比较性时,或者具备的比较性不是所需要的;
注意:这时需要让集合自身具备比较性
在集合初始化时,就有了比较方式;
定义一个类,实现comparator接口,实现compare方法

当两种排序都存在时,比较器排序优先级更高
因此比较器用的多一些,在实际开发中,很多时候,引用数据类型是否具有比较性,或者比较规则,可能不由开发人员自己决定,
那么开发人员想要对应的引用数据类型按照自己的排序方式进行排列,那么就需要实现comparator接口,实现compare方法
用两个案例说明
1、打破原有的person排序规则进行排序
2、按照字符串长度进行排序(String默认是按照hashCode值进行排序的)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

TreeSet数据结构(二叉树)

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

泛型(概述及使用、泛型类、泛型方法、静态方法泛型、泛型接口)

图解如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值