Java集合 · HashSet | 8月更文挑战

128 阅读1分钟

要了解一个类,我们要了解三点,首先是这个类在哪个包下,其次是这个类的构造方法,最后是这个类的实例方法。接下来我们就按照这个步骤来了解HashSet类。

HashSet简述

HashSet所在包

HashSet继承了Set接口,由哈希表支持,不允许有重复元素。他不保证set的迭代顺序:特别是它不保证该顺序恒久不变,此类允许使用null元素。

HashSet是java.util中的一个类。初始化时,要先导入java.util.HashSet包。
//定义一个HashSet集合
HashSet<String> hashSet = new HashSet<>();
//String表示hashSet集合中存放的是String类型的数据,可以根据需要来更改,但必须是引用类型。

HashSet构造方法

HashSet有四个构造方法。

HashSet() 构造一个新的空 set,其底层 HashMap 实例的默认初始容量是 16,加载因子是 0.75//默认构造器
map = new HashMap<>();
HashSet(Collection<? extends E> c) 构造一个包含指定 collection 中的元素的新 set。
//将传入的集合添加到hashSet中
map = new HashMap<>(Math.max((int) (c.size()/.75f) + 1, 16));
addAll(c);
HashSet(int initialCapacity) 构造一个新的空 set,其底层 HashMap 实例具有指定的初始容量和默认的加载因子(0.75)。
//指定初始容量
 map = new HashMap<>(initialCapacity);
HashSet(int initialCapacity, float loadFactor) 构造一个新的空 set,其底层 HashMap 实例具有指定的初始容量和指定的加载因子。
//指定初始容量和加载因子
map = new HashMap<>(initialCapacity, loadFactor);

通过上面代码我们可以看出,HashSet实际上是个“中间商”,接到活之后都交给了HashMap来处理。

HashSet的方法

booleanadd(E e) 如果此 set 中尚未包含指定元素,则添加指定元素。
voidclear() 从此 set 中移除所有元素。
booleancontains(Object o) 如果此 set 包含指定元素,则返回 true。
Iteratoriterator() 返回对此 set 中元素进行迭代的迭代器。
booleanremove(Object o) 如果指定元素存在于此 set 中,则将其移除。
intsize() 返回此 set 中的元素的数量(set 的容量)。

表格中是一些常用的方法,HashSet和继承了很多方法,这里不能一一细说,大家使用时可以查阅API文档了解具体使用方法,

来看一下具体使用,方便大家理解。

public class Test {
   public static void main(String[] args) {
      HashSet<String> hashSet = new HashSet<>();
      //在HashSet中添加元素
      hashSet.add("吴亦凡");
      hashSet.add("李小璐");
      hashSet.add("迪丽热巴");
      hashSet.remove("吴亦凡");
      //contains方法
      if(hashSet.contains("迪丽热巴")){
         System.out.println("********");
      }
      //迭代器iterator
      Iterator iter = hashSet.iterator();
      while(iter.hasNext()){
         String next = (String) iter.next();
         System.out.println(next);
      }
      hashSet.clear();
   }
}

以上就是我对HashSet的一些理解,如有不对,欢迎掘友们留言指正。