W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
java.lang.Object
|---java.util.AbstractCollection<E&
|---|---java.util.AbstractSet<E&
|---|---|---java.util.HashSet<E&
|---|---|---|---java.util.LinkedHashSet<E&
public class LinkedHashSet<E>
extends HashSet<E>
implements Set<E>, Cloneable, Serializable
Set 接口的哈希表和鏈表實(shí)現(xiàn),具有可預(yù)測(cè)的迭代順序。 此實(shí)現(xiàn)與 HashSet 的不同之處在于它維護(hù)一個(gè)雙向鏈表,該列表貫穿其所有條目。 該鏈表定義了迭代順序,即元素插入集合的順序(插入順序)。 請(qǐng)注意,如果將元素重新插入集合中,則插入順序不受影響。 (如果 s.add(e) 被調(diào)用,而 s.contains(e) 將在調(diào)用之前立即返回 true,則元素 e 被重新插入到集合 s 中。)
此實(shí)現(xiàn)使其客戶免于 HashSet 提供的未指定、通?;靵y的排序,而不會(huì)增加與 TreeSet 相關(guān)的成本。 它可用于生成與原始集合具有相同順序的集合的副本,而不管原始集合的實(shí)現(xiàn)如何:
void foo(Set s) {
Set copy = new LinkedHashSet(s);
...
}
如果模塊在輸入上獲取一個(gè)集合,復(fù)制它,然后返回其順序由復(fù)制的順序確定的結(jié)果,則此技術(shù)特別有用。 (客戶通常喜歡以與呈現(xiàn)相同的順序返回物品。)
此類提供所有可選的 Set 操作,并允許 null 元素。 與 HashSet 一樣,它為基本操作(添加、包含和刪除)提供恒定時(shí)間性能,假設(shè)哈希函數(shù)在桶中正確地分散元素。 由于維護(hù)鏈表的額外費(fèi)用,性能可能略低于 HashSet,但有一個(gè)例外:迭代 LinkedHashSet 所需的時(shí)間與集合的大小成正比,而不管其容量如何。 HashSet 的迭代可能會(huì)更昂貴,需要的時(shí)間與其容量成正比。
鏈接哈希集有兩個(gè)影響其性能的參數(shù):初始容量和負(fù)載因子。 它們的定義與 HashSet 一樣。 但是請(qǐng)注意,對(duì)于此類而言,為初始容量選擇過高值的懲罰不如 HashSet 嚴(yán)重,因?yàn)榇祟惖牡鷷r(shí)間不受容量的影響。
請(qǐng)注意,此實(shí)現(xiàn)不同步。 如果多個(gè)線程同時(shí)訪問一個(gè)鏈接的哈希集,并且至少有一個(gè)線程修改了該集,則它必須在外部同步。 這通常是通過在一些自然封裝集合的對(duì)象上同步來完成的。 如果不存在這樣的對(duì)象,則應(yīng)使用 Collections#synchronizedSet 方法“wrapped”該集合。 這最好在創(chuàng)建時(shí)完成,以防止對(duì)集合的意外不同步訪問:
Set s = Collections.synchronizedSet(new LinkedHashSet(...));
此類的迭代器方法返回的迭代器是快速失敗的:如果在創(chuàng)建迭代器后的任何時(shí)間修改集合,除了通過迭代器自己的 remove 方法之外,迭代器將拋出 ConcurrentModificationException。 因此,面對(duì)并發(fā)修改,迭代器快速而干凈地失敗,而不是在未來不確定的時(shí)間冒任意的、非確定性的行為。
請(qǐng)注意,不能保證迭代器的快速失敗行為,因?yàn)橐话銇碚f,在存在不同步的并發(fā)修改的情況下,不可能做出任何硬保證。 快速失敗的迭代器會(huì)盡最大努力拋出 ConcurrentModificationException。 因此,編寫一個(gè)依賴于這個(gè)異常的正確性的程序是錯(cuò)誤的:迭代器的快速失敗行為應(yīng)該只用于檢測(cè)錯(cuò)誤。
此類是 Java 集合框架的成員。
構(gòu)造函數(shù) | 描述 |
---|---|
LinkedHashSet() | 使用默認(rèn)初始容量 (16) 和加載因子 (0.75) 構(gòu)造一個(gè)新的空鏈接哈希集。 |
LinkedHashSet(int initialCapacity) | 使用指定的初始容量和默認(rèn)加載因子 (0.75) 構(gòu)造一個(gè)新的空鏈接哈希集。 |
LinkedHashSet(int initialCapacity, float loadFactor) | 使用指定的初始容量和負(fù)載因子構(gòu)造一個(gè)新的空鏈接哈希集。 |
LinkedHashSet(Collection<? extends E> c) | 使用與指定集合相同的元素構(gòu)造一個(gè)新的鏈接哈希集。 |
修飾符和類型 | 方法 | 描述 |
---|---|---|
SpliteratorE | spliterator() | 在此集合中的元素上創(chuàng)建一個(gè)后期綁定和快速失敗的拆分器。 |
從類 java.util.AbstractCollection 繼承的方法 |
---|
addAll, containsAll, retainAll, toArray, toArray, toString |
從類 java.util.AbstractSet 繼承的方法 |
---|
equals, hashCode, removeAll |
從接口 java.util.Collection 繼承的方法 |
---|
parallelStream, removeIf, stream |
從類 java.util.HashSet 繼承的方法 |
---|
add, clear, clone, contains, isEmpty, iterator, remove, size |
從接口 java.lang.Iterable 繼承的方法 |
---|
forEach |
從類 java.lang.Object 繼承的方法 |
---|
finalize, getClass, notify, notifyAll, wait, wait, wait |
從接口 java.util.Set 繼承的方法 |
---|
add, addAll, clear, contains, containsAll, equals, hashCode, isEmpty, iterator, remove, removeAll, retainAll, size, toArray, toArray |
public LinkedHashSet(int initialCapacity, float loadFactor)
使用指定的初始容量和負(fù)載因子構(gòu)造一個(gè)新的空鏈接哈希集。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
initialCapacity | 鏈接哈希集的初始容量 |
loadFactor | 鏈接哈希集的負(fù)載因子 |
Throws:
Throw名稱 | Throw描述 |
---|---|
IllegalArgumentException | 如果初始容量小于零,或者負(fù)載因子為非正數(shù) |
public LinkedHashSet(int initialCapacity)
使用指定的初始容量和默認(rèn)加載因子 (0.75) 構(gòu)造一個(gè)新的空鏈接哈希集。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
initialCapacity | LinkedHashSet 的初始容量 |
Throws:
Throw名稱 | Throw描述 |
---|---|
IllegalArgumentException | 如果初始容量小于零 |
public LinkedHashSet()
使用默認(rèn)初始容量 (16) 和加載因子 (0.75) 構(gòu)造一個(gè)新的空鏈接哈希集。
public LinkedHashSet(Collection<? extends E> c)
使用與指定集合相同的元素構(gòu)造一個(gè)新的鏈接哈希集。 鏈接哈希集的初始容量足以容納指定集合中的元素和默認(rèn)加載因子 (0.75)。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
c | 將其元素放入此集合的集合 |
Throws:
Throw名稱 | Throw描述 |
---|---|
NullPointerException | 如果指定的集合為空 |
public SpliteratorE spliterator()
在此集合中的元素上創(chuàng)建一個(gè)后期綁定和快速失敗的拆分器。
Spliterator 報(bào)告 Spliterator#SIZED、Spliterator#DISTINCT 和 ORDERED。 實(shí)施應(yīng)記錄附加特征值的報(bào)告。
指定者:
接口 CollectionE 中的分離器
指定者:
接口 IterableE 中的分離器
指定者:
接口 SetE 中的分離器
覆蓋:
HashSetE 類中的拆分器
返回:
此集合中元素的拆分器
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: