一、LindedList
LinkedList 底层数据结构是链表,所以有针对头节点和尾节点操作的办法。
二、Set 接口
办法与 Collection 一样
不蕴含反复元素
没有带索引的办法,不能用 *** 一般 for*** 遍历
2.1 案例:存储字符串并遍历
创建对象:
Set 是接口
须要用实现类 HashSet()来创立
Set<String> s = new HashSet<String>();
HashSet()不对存储程序保障
Set()不蕴含反复元素
2.2 哈希值
同一个对象的 hash 值一样
默认状况下,不同对象的 hash 值不同。
(如果在类里重写了 hashCode(),能够实现不同对象的哈希值雷同
三、HashSet()类
public class HashSet() implements Set
- HashSet 汇合实现了 Set 接口,底层是哈希表
- 无序,存入和取出的程序不能保障统一
- 没有索引办法,不能一般 for 遍历,然而能够 Iterator 和 加强 for 遍历
-
和 Set 一样不蕴含反复元素
四、HashSet 如何保障无反复元素
五、哈希表
是一种数据结构
JDK8 之前底层是数组 + 链表
JDK8 之后长度过长时进行了优化
首先计算存入字符串的哈希值,HashSet()无参构造方法默认长度是 16,而后将哈希值对 16 取余,按余数存储。
余数雷同,看哈希值是否雷同,哈希值雷同看内容是否雷同,这里雷同就不存进去。