(JAVA)-set集合

Set <String> s= new HashSet<>();
System.out.println(s.add(""));//ture
System.out.println(s.add(""));//false
//第一次添加成功,第二次失败,可以利用set去重

 

遍历方式

通用集合遍历方式,可以根据下方链接前往

HashSet :

底层采用哈希表存储数据

哈希表是一种增删改查性能都比较好的结构

哈希表组成

JDK8以前

数组+链表

之后

数组+链表+红黑树

上面的是根据哈希值计算出数据在数组中应存入的位置

hashcoad方法在object类中

哈希值是根据hashcoad方法进行计算,默认使用地址值,通常会重写hashcoad方法,利用属性值计算哈希值

如果没有重写,不同对象计算出的值是不一样的,重写了属性相同的对象哈希值相等

小部分情况下,不同属性值或不同地址值计算出的哈希值也可能一样(哈希碰撞)

LinkHashSet

底层仍然是哈希表,多了一个双链表存储顺序,保证存入取出的同序性

TreeSet

底层是红黑树,增删改查性能都较好,可以进行排序

默认排序规则

添加时,得指定比较规则

方法一javabean实现comparable方法,重写里面compareTo方法

o表示红黑树中已经存在的对象

this表示当前的对象

方法二:创建对象时候传递comparator比较器

当系统排序不能满足要求,例如排序字符串时可以使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值