Java面试---HashSet 是如何保证不重复的
HashSet类实现了Set接口, 其底层其实是包装了一个HashMap去实现。HashSet采用HashCode算法来存取集合中的元素,因此具有比较好的读取和查找性能。 下面我们来看一下源码: 下面是HashSet的几个构造方法 可以看得出 HashSet的底层其实是HashMap存储的 通俗来说HashSet就是HashMap的马甲: // 默认构造函数 底层创建一个HashMap public HashSet() { // 调用HashMap的默认构造函数,创建map map = new HashMap<E,Object>(); } // 带集合的构造函数 public HashSet(Collection<? extends E> c) { // 创建map。 map = new HashMap<E,Object>(Math.max((int) (c.size()/.75f) + 1, 16)); // 将集合(c)中的全部元素添加到HashSet中 addAll(c); } // 指定HashSet初始容量和加载因子的构造函数 public HashSet(int initialCapacity, float loadFactor) { map = new HashMap<E,Object>(initialCapacity, loadFactor); } //