《集合详解之set》

Hashset

无序:是添加元素的顺序与元素出来的顺序是不一致的。

Hashset实现原理:hashset添加元素的时候,hashset会先调用的hashcode方法得到元素的哈希值,然后通过元素的哈希值经过移位等运算,就可以算出该元素在哈希表中的存储位置。

如果算出存储位置分两种情况:

情况一:如果算出元素储存位置目前没有任何元素存储,那么该元素可以直接存储到该位置上

情况二:如果算出该元素在储存位置目前已经存在有其他元素了,那么就会调用该元素的equals方法与该位置的元素再比较一次,如果equals返回时true,那么该元素与这个位置上的元素就视为重复元素,不允许添加,如果equals返回false,那么该元素允许添加。

哈希表的其中一个特点:桶式结构

Hashset:底层是使用了哈希表来支持的,特点:存取速度快

Hashcode默认情况下表示的是内存地址,String类已经重写了objecthashcode方法了

Treeset

Treeset 特点:如果元素具备自然顺序的特性,那么就按照元素自然顺序的特性进行排序存储

Treeset要注意的事项:

1. treeset添加元素的时候,如果元素本身具备了自然顺序的特性,那么就按照元素自然顺序的特性进行储存。

2. treeset添加元素的时候,如果元素本身不具备自然顺序的特性,那么该元素所属的类必须要实现comparable接口,把元素的比较规则定在comparble(t o)方法上。

3. 如果比较元素的时候,compareto方法返回是0,那么该元素就被视为重复元素,不允许添加(treesethashcode.equals方法是没有任何关系的

4. treeset添加元素的时候,如果元素本身没有具备自然顺序的特性,而元素所属的类也没有实现comparable接口,那么必须创建treeset的时候,传入一个比较器

自定义比较器的格式:

Class 类名 implements comparator{

 

}

5.treeset添加元素的时候,如果元素本身不具备自然顺序的特性,而元素所属的类已经实现了comparble接口,在创建treeset对象的时候也传入了比较器,那么以比较器的比较规则优先使用的

Treeset储存原理:底层是使用红黑树(二叉树)数据实现的

红黑树储存规则:左小右大,数据小放在左边,数据大的放在右边

Treeset是可以对字符串进行排序的,因为字符串已经实现了comparable接口

情况一

对应位置上有不同的字符出现,比较的就是对应位置上不同的字符

情况二

对应位置上的字符都是一样的,比较的就是字符串的长度

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值