Java自学笔记—LinkedHashSet
特点
- HashSet子类
- 底层是LinkedHashMap,底层维护了一个数组 + 双向链表,有 head 和 tail 结点
- 每个结点有before和after属性,以便形成双向链表
- 根据hashCode值确定元素存储位置,同时使用链表维护元素次序,使得元素看起来以插入顺序保
- 不允许添加重复元素
- 遍历时可以确保遍历和插入顺序一致
- 在添加元素时,先求hash值,再求索引,确定table位置,然后将该元素加到双向链表(如果已经存在,则不添加,和HashSet一样)
tail.next = newElement;
newElement.pre = tail;
tail = ewElement;
import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.Set;
public class LinkedHashSet_ {
public static void main(String[] args) {
Set set = new LinkedHashSet();
set.add(new String("AA"