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的主要内容,如果未能解决你的问题,请参考以下文章