一、Set集合
1. 概述:
java.util.Set接口,继承自Collection接口。它与Collection接口中的方法基本一致,没有扩充,只是比Collection接口更加严格了。2. Set接口的特点:
2.1 不允许存储重复的元素。
2.2 没有索引3. 主要子类:
3.1 java.util.HashSet
3.2 java.util.LinkedHashSet
二、HashSet
1. HashSet特点:
1.1 不允许存储重复的元素
1.2 没有索引
1.3 是一个无序的集合
1.4 底层是一个哈希表结构(查询的速度非常的快),底层的实现是java.util.HashMap支持。
三、哈希表
1. 哈希值:
是一个十进制的整数,由系统随机给出的(就是对象的地址值,是一个模拟出来的逻辑地址,不是数据存储的物理地址)。2. HashSet集合存储数据的结构(哈希表):
JDK1.8版本后:哈希表=数组+链表/红黑树(链表的长度超过阈值8时,将链表转为红黑树)。
四、HashSet存储自定义类型元素
给HashSet中存放自定义类型元素时,需要重写对象中的hashCode和equals方法,建立自己的比较方式,才能保证HashSet集合中的对象唯一。