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, sizeequals, hashCode, removeAlladdAll, containsAll, retainAll, toArray, toArray, toStringfinalize, getClass, notify, notifyAll, wait, wait, waitadd, addAll, clear, contains, containsAll, equals, hashCode, isEmpty, iterator, remove, removeAll, retainAll, size, toArray, toArrayparallelStream, removeIf, streampublic 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.