days16--集合之Set

Posted 安小猿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了days16--集合之Set相关的知识,希望对你有一定的参考价值。

Set:不重复 无序(没下标),存储和取出的顺序不能保证相同

HashSet:底层结构是元素为链表的数组

通过hashCode()返回值取模16得到存储位置,再通过equals()判断与同一位置链表的不同元素是否相同,相同覆盖,不同插入

哈希值:一种运算方式,或一种结构,一种信息压缩的方式

概述: 根据对象的地址值或者字符串或者数字计算得到的int类型的数值 Obeject中可以通过hasCode()方法来获取哈希值

重写equals()时,也必须重写hashCode()方法,因为相等的对象必须具有相等的散列码(hashCode)。详解

特点: 同一个对象多次调用hasCode()方法返回的哈希值是相同的
默认情况下,不同对象的的哈希值是不同的,通过重写hasCode(),可以实现让不同对象的哈希值相同

TreeSet

概述: 元素有序,不是存储或取出有序,而是按照一定的规则进行排序,排序方式取决于构造方法

TreeSet():根据元素的自然排序进行排序
TreeSet(Comparator comparator):根据指定的比较器比较

特点:
元素有序
没有带索引的方法,不能使用for循环遍历
继承Set集合,元素不能重复

用TreeSet存储对象,无参构造方法使用自然排序 自然排序的实现,就是元素实现Comparable接口,重写compareTo方法
重写方法时,排序规则要按需求的主次条件来写

compareTo返回值为0 认为两个元素相同,去重
compareTo返回值为负,倒序(从大到小)
compareTo返回值为正,正序(从小到大)

比较器Comparator的使用

用TreeSet存储对象,有参构造方法使用比较器进行排序
比较器的实现,就是让集合构造接收Comparator接口的匿名实现类,重写compare方法 重写方法时,排序规则要按需求的主次条件来写

以上是关于days16--集合之Set的主要内容,如果未能解决你的问题,请参考以下文章

架构师数据结构技术Day03-集合之Set

架构师数据结构技术Day03-集合之Set

CGBTN2110 DAY16 总结复习

CGBTN2110 DAY16 总结复习

Set集合之hashCode()和equals()

DAY 013--set(增删改查关系)