具有Set类公共特点(无存储顺序, 不允许存储重复元素,无索引),HashSet类底层是哈希表结构,查询速度非常快。
哈希表=数组+链表/红黑树
import java.util.HashSet; import java.util.Iterator; import java.util.Set; public class Demo { public static void main(String[] args) { Set<Integer> set = new HashSet<>(); set.add(1); set.add(5); set.add(5); set.add(9); //集合不允许重复元素,所以只会有3个 //推荐用增强for循环遍历 for (Integer i : set) { System.out.println(i); } Iterator<Integer> iter = set.iterator(); while (iter.hasNext()) { Integer n = iter.next(); System.out.println(n); } } }LinkedHashSet类底层是哈希表结构基础上再加一条链表用于记录存储顺序。 即底层是:哈希表(数组+链表/红黑树)+链表
public class Demo { public static void main(String[] args) { Set<String> set = new HashSet<>(); set.add("b"); set.add("a"); set.add("b"); set.add("c"); //集合不允许重复元素,所以只会有3个 //System.out.println(set);没记录存储顺序,所以[a, b, c] Set<String> set2 = new LinkedHashSet<>(); set2.add("b"); set2.add("a"); set2.add("b"); set2.add("c"); //集合不允许重复元素,所以只会有3个 //System.out.println(set2);记录存储顺序,所以[b, a, c] } }