HashSet

HashSet

HashSet類,是存在於java.util包中的類。同時也被稱為集合,該容器中只能存儲不重複的對象,

已知實現接口有:

Serializable, Cloneable, Iterable<E>, Collection<E>, Set<E>

直接已知子類:

JobStateReasons, LinkedHashSet

基本介紹

  • 外文名:HashSet
  • 所屬語言:java
  • 包與類:java.util.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();
}
...
}

  

相關詞條

熱門詞條

聯絡我們