Set集合: 单列数据结构。
特点:
1.不允许存储重复的元素
2.最多包含一个null元素
3.通常认为Set接口元素是无序的。
4.通常认为Set接口无索引。
Set接口的子类:java.util.HashSet和 Java.util.LinkedHashSet
HashSet集合:
它存储的元素是不允许重复,并且元素是无序的(存取顺序不一致,意思是不是按照存放顺序显示的)
HashSet的底层实现需要有java.util.HashMap支持。
它的元素是根据对象的哈希值来确定在集合中元素的存储位置,因此存取和查找性能较好,
保证元素唯一依赖于重写的hashCode 和equals方法
在JDK1.8之前 哈希表数据底层采用数组+链表结构存储数据
在JDK1.8之后 哈希表存储采用数组+链表+红黑树实现,
当链表长度超过阈值(8),将链表转换成红黑树存储。
//创建Set集合 Set<String> set= new HashSet<String>(); //添加元素 set.add("小明"); set.add("小王"); set.add("小刘"); set.add("小周"); set.add("小王"); //通过迭代器来获取 Iterator<String> iterator = set.iterator(); while (iterator.hasNext()){ //next方法 String str = iterator.next(); System.out.println(str);//小刘、小周、小明、小王(无序排列,不可重复会有提示)
LinkHashSet集合:
元素不重复,并且是有序的。
我们常说的链表结构:单项链表和双向链表