HashSet 是一个没有重复元素的集合
它是由HashMap实现的,不保证元素的顺序,而且HashSet允许使用 null 元素
HashSet是非同步的。如果多个线程同时访问一个哈希 set,而其中至少一个线程修改了该 set,那么它必须 保持外部同步。这通常是通过对自然封装该 set 的对象执行同步操作来完成的。如果不存在这样的对象,则应该使用 Collections.synchronizedSet 方法来“包装” set。最好在创建时完成这一操作,以防止对该 set 进行意外的不同步访问:

Set s = Collections.synchronizedSet(new HashSet(...));

HashSet通过iterator()返回的迭代器是fail-fast的。

HashSet的构造函数

public HashSet()    // 默认构造函数

public HashSet(Collection<? extends E> c)     // 带集合的构造函数

public HashSet(int initialCapacity, float loadFactor)     // 指定HashSet初始容量和加载因子的构造函数

public HashSet(int initialCapacity)     // 指定HashSet初始容量的构造函数

HashSet(int initialCapacity, float loadFactor, boolean dummy)  // 指定HashSet初始容量和加载因子的构造函数,dummy没有任何作用

HashSet的主要API

boolean         add(E object)
void            clear()
Object          clone()
boolean         contains(Object object)
boolean         isEmpty()
Iterator<E>     iterator()
boolean         remove(Object object)
int             size()

HashSet遍历方式

  • 通过Iterator遍历HashSet
    for(Iterator iterator = set.iterator();
         iterator.hasNext(); ) { 
      iterator.next();
    }
    
  • 通过for-each遍历HashSet

    String[] arr = (String[])set.toArray(new String[0]);
    for (String str:arr)
        System.out.printf("for each : %s\n", str);
    

results matching ""

    No results matching ""