Set集合
Set集合主要特点
- 可以对数据去重
- 存取顺序不一致
- 没有索引,不能使用普通for循环遍历
Set集合实现类
- TreeSet
- HashSet
TreeSet集合
TreeSet集合概述和特点
不可以存储重复元素
没有索引
可以将元素按照规则进行排序
TreeSet():根据其元素的自然排序进行排序
TreeSet(Comparator comparator) :根据指定的比较器排序
Comparable自然排序
空参构造创建TreeSet集合
自定义类实现Comparable接口
重写compareTo方法
Comparator比较器排序
带参构造方法使用比较器排序
- 集合构造方法接收Comparator的实现类对象,重写compare(T o1,T o2)方法
- 重写方法,排序规则必须按照要求的主要条件和次要条件来写
两种比较方式
自然排序:类实现接口,重写compareTo方法,根据返回值进行排序
比较器排序: 创建TreeSet对象的时候传递Comparator的实现类对象,重写compare方法,根据返回值进行排序
一般默认使用自然排序,当自然排序不满足现在的需求时,必须使用比较器排序
两种方式中关于返回值的规则
负数存左边
返回值为0不存
正数存右边
HashSet集合
HashSet集合概述和特点
底层数据结构为哈希表
不能保证存取顺序一致
没有索引
元素唯一
哈希值
哈希值
根据对象的地址或者字符串或者数字算出来的int值
- 获取哈希值
- Object类中的public int hashCode():返回对象的哈希码值
哈希值的特点
同一个对象多次调用hashCode()方法返回的哈希值是相同的
默认情况下,不同对象的哈希值是不同的。而重写hashCode()方法,可以实现让不同对象的哈希值相同(一般根据属性计算)
HashSet集合存储自定义类型元素,要想实现元素的唯一,要求必须重写hashCode方法和equals方法