HashSet

構造方法摘要

HashSet()

構造一個新的空 set,其底層 HashMap 實例的默認初始容量是 16,載入因子是 0.75。

HashSet(Collection<? extends E> c)

構造一個包含指定 collection 中的元素的新 set。

HashSet(int initialCapacity)

構造一個新的空 set,其底層 HashMap 實例具有指定的初始容量和默認的載入因子(0.75)。

HashSet(int initialCapacity, float loadFactor)

構造一個新的空 set,其底層 HashMap 實例具有指定的初始容量和指定的載入因子。

方法摘要

boolean add(E e)

如果此 set 中尚未包含指定元素,則添加指定元素。

void clear()

從此 set 中移除所有元素。

Object clone()

返回此 HashSet 實例的棧表副本:並沒有複製這些元素本身。

boolean contains(Object o)

如果此 set 包含指定元素,則返回 true。

boolean isEmpty()

如果此 set 不包含任何元素,則返回 true。

Iterator<E> iterator()

返回對此 set 中元素進行疊代的疊代器。

boolean remove(Object o)

如果指定元素存在於此 set 中,則將其移除。

int size()

返回此 set 中的元素的數量(set 的容量)。

從類 java.util.AbstractSet 繼承的方法

equals, hashCode, removeAll

從類 java.util.AbstractCollection 繼承的方法

addAll, containsAll, retainAll, toArray, toArray, toString

從類 java.lang.Object 繼承的方法

finalize, getClass, notify, notifyAll, wait, wait, wait

從接口 java.util.Set 繼承的方法

addAll, containsAll, equals, hashCode, removeAll, retainAll, toArray, toArray

實現舉例

public class HashSet<E>

extends AbstractSet<E>

implements Set<E>, Cloneable, java.io.Serializable

{

// 使用 HashMap 的 key 保存 HashSet 中所有元素

private transient HashMap<E,Object> map;

// 定義一個虛擬的 Object 對象作為 HashMap 的 value

private static final Object PRESENT = new Object();

...

// 初始化 HashSet,底層會初始化一個 HashMap

public HashSet()

{

map = new HashMap<E,Object>();

}

// 以指定的 initialCapacity、loadFactor 創建 HashSet

// 其實就是以相應的參數創建 HashMap

public HashSet(int initialCapacity, float loadFactor)

{

map = new HashMap<E,Object>(initialCapacity, loadFactor);

}

public HashSet(int initialCapacity)

{

map = new HashMap<E,Object>(initialCapacity);

}

HashSet(int initialCapacity, float loadFactor, boolean dummy)

{

map = new LinkedHashMap<E,Object>(initialCapacity

, loadFactor);

}

// 調用 map 的 keySet 來返回所有的 key

public Iterator<E> iterator()

{

return map.keySet().iterator();

}

// 調用 HashMap 的 size() 方法返回 Entry 的數量,就得到該 Set 里元素的個數

public int size()

{

return map.size();

}

// 調用 HashMap 的 isEmpty() 判斷該 HashSet 是否為空,

// 當 HashMap 為空時,對應的 HashSet 也為空

public boolean isEmpty()

{

return map.isEmpty();

}

// 調用 HashMap 的 containsKey 判斷是否包含指定 key

//HashSet 的所有元素就是通過 HashMap 的 key 來保存的

public boolean contains(Object o)

{

return map.containsKey(o);

}

// 將指定元素放入 HashSet 中,也就是將該元素作為 key 放入 HashMap

public boolean add(E e)

{

return map.put(e, PRESENT) == null;

}

// 調用 HashMap 的 remove 方法刪除指定 Entry,也就刪除了 HashSet 中對應的元素

public boolean remove(Object o)

{

return map.remove(o)==PRESENT;

}

// 調用 Map 的 clear 方法清空所有 Entry,也就清空了 HashSet 中所有元素

public void clear()

{

map.clear();

}

...

}


相關詞條

熱門詞條

聯絡我們