E
-元素这一套保持型
public class LinkedHashSet<E> extends HashSet<E> implements Set<E>, Cloneable, Serializable
哈希表和相关的Set接口列表实现,具有可预测的迭代顺序。这不同于HashSet实施,它维护了一个链表贯穿其所有作品。这个链表定义迭代顺序,这是为了在该元素被插入到集合(插入顺序)。注意插入的顺序是不如果元素是重新插入进入设置的影响。(一元e重新插入到一套s如果s.add(e)时调用将返回true s.contains(e)立即调用。之前)
这个实现备件客户从指定,一般由HashSet
混沌有序,又不增加成本与TreeSet
。它可以被用来产生一个具有相同的顺序为原来的一组,无论原来的设置的实施:
void foo(集){集抄=新linkedhashset(S);…}这种技术如果一个模块的输入,以一组份是特别有用的,后来返回结果的顺序是:确定的副本。(客户一般喜欢有东西返回的顺序一样了。)
这个类提供了所有可选的Set操作,并允许null元素。像HashSet,它的基本运算提供了稳定的性能(add,contains和remove),假设哈希函数的适当分散元素在水桶。性能可能会略低于HashSet,由于维护链表的附加费用,但有一个例外:在LinkedHashSet迭代需要的设置大小比例时,无论其能力。在HashSet迭代可能是昂贵的,需要时间来容量比例。
链接散列集有两个参数影响它的性能:初始容量和负载因子。他们是精确的定义为HashSet。注意,然而,选择初始能力值过高的惩罚是不太严重的这类HashSet相比,对于这类迭代次数不受力。
请注意,此实现不同步。如果多个线程访问链接散列集的同时,并至少有一个线程修改的集合,它必须是同步的外部。这通常是通过同步的一些对象,自然封装设置完成。如果该对象不存在,设定应该是“包裹”使用Collections.synchronizedSet
方法。最好的做法是在创建时,防止意外的非同步访问的设置:
集的集合。synchronizedset(新linkedhashset(…));
迭代器返回这个类的iterator方法是快速失败:如果集合在迭代器是创建的任何时间修改,以任何方式除了通过迭代器的remove方法,迭代器将抛出一个ConcurrentModificationException
。因此,在并发修改的面前,迭代器失败迅速和干净,而不是冒着任意的,非确定性的行为在未来的一个不确定的时间。
注意迭代器不能快速失败行为得到保证的话,一般来说,不可能在不同步的并发修改的存在作出难以保证。快速失败迭代器扔ConcurrentModificationException尽最大努力的基础上。因此,要写一个程序,依靠这一例外的正确性错误:快速失败迭代器的行为只能用来检测错误。
这个班的一员 Java Collections Framework。
Object.hashCode()
,
Collection
,
Set
,
HashSet
,
TreeSet
,
Hashtable
,
Serialized Form
Constructor and Description |
---|
LinkedHashSet()
构造一个新的,空链接的哈希集,默认初始容量(16)和负载因子(0.75)。
|
LinkedHashSet(Collection<? extends E> c)
构造一个与指定集合相同的元素的新链接散列集。
|
LinkedHashSet(int initialCapacity)
构造一个新的、具有指定初始容量和默认负载因子(0.75)的空链接哈希集。
|
LinkedHashSet(int initialCapacity, float loadFactor)
构造一个具有指定初始容量和负载因子的新的空链接哈希集。
|
Modifier and Type | Method and Description |
---|---|
Spliterator<E> |
spliterator()
创建一个后期绑定和快速失败
Spliterator 在这个集合中的元素。
|
add, clear, clone, contains, isEmpty, iterator, remove, size
equals, hashCode, removeAll
addAll, containsAll, retainAll, toArray, toArray, toString
finalize, getClass, notify, notifyAll, wait, wait, wait
add, addAll, clear, contains, containsAll, equals, hashCode, isEmpty, iterator, remove, removeAll, retainAll, size, toArray, toArray
parallelStream, removeIf, stream
public LinkedHashSet(int initialCapacity, float loadFactor)
initialCapacity
-链接散列集的初始容量
loadFactor
-链接散列集负荷系数
IllegalArgumentException
如果初始容量小于零,或者负载因子是负的
public LinkedHashSet(int initialCapacity)
initialCapacity
- LinkedHashSet的初步能力
IllegalArgumentException
如果初始容量小于零
public LinkedHashSet()
public LinkedHashSet(Collection<? extends E> c)
c
的元素都被放置到这集的集合
NullPointerException
-如果指定集合为空
public Spliterator<E> spliterator()
Spliterator
在这个集合中的元素。
报告的Spliterator
Spliterator.SIZED
,Spliterator.DISTINCT
,和ORDERED
。实现应该记录额外的特征值的报告。
spliterator
接口
Iterable<E>
spliterator
接口
Collection<E>
spliterator
接口
Set<E>
spliterator
方法重写,继承类
HashSet<E>
Iterator
后期绑定spliterator。的spliterator继承快速失败性质的集合的迭代器。创建
Spliterator
另外报道
Spliterator.SUBSIZED
。
Spliterator
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.