LinkedHashSet 类

定义

接口的 Set 哈希表和链接列表实现,具有明确定义的遇到顺序。

[Android.Runtime.Register("java/util/LinkedHashSet", DoNotGenerateAcw=true)]
[Java.Interop.JavaTypeParameters(new System.String[] { "E" })]
public class LinkedHashSet : Java.Util.HashSet, IDisposable, Java.Interop.IJavaPeerable
[Android.Runtime.Register("java/util/LinkedHashSet", DoNotGenerateAcw=true)]
[Java.Interop.JavaTypeParameters(new System.String[] { "E" })]
public class LinkedHashSet : Java.Util.HashSet, IDisposable, Java.Interop.IJavaPeerable, Java.Util.ISequencedSet
[<Android.Runtime.Register("java/util/LinkedHashSet", DoNotGenerateAcw=true)>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "E" })>]
type LinkedHashSet = class
    inherit HashSet
    interface ISerializable
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
    interface ICloneable
    interface ISet
    interface ICollection
    interface IIterable
[<Android.Runtime.Register("java/util/LinkedHashSet", DoNotGenerateAcw=true)>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "E" })>]
type LinkedHashSet = class
    inherit HashSet
    interface ISerializable
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
    interface ICloneable
    interface ISequencedSet
    interface ISequencedCollection
    interface ICollection
    interface IIterable
    interface ISet
继承
属性
实现

注解

接口的 Set 哈希表和链接列表实现,具有明确定义的遇到顺序。 此实现不同于 HashSet 它维护在其所有条目中运行的双重链接列表。 此链接列表定义相遇顺序(迭代顺序),即元素插入集中的顺序(插入顺序)。 最近插入的元素(最晚)是第一个,最年轻的元素是最后一个元素。 请注意,如果使用该方法将元素重新插入到集中add,则遇到顺序不会受到影响。 (如果在s.add(e)调用前立即返回trues.contains(e)则会将元素e重新插入到集中s。此集的反向排序视图按相反的顺序显示,最年轻的元素先出现,最后显示最年轻的元素。 可以使用和#addLast addLast方法更改#addFirst addFirst集中已存在元素的遇到顺序。

此实现使客户端不受指定(通常是混乱的排序) HashSet的余地,而不会产生与 TreeSet它相关的成本增加。 它可用于生成与原始集具有相同顺序的集的副本,而不考虑原始集的实现:

{@code
                void foo(Set<String> s) {
                    Set<String> copy = new LinkedHashSet<>(s);
                    ...
                }
            }

如果模块在输入上获取集、复制它,然后返回其顺序由副本确定的结果,则此方法特别有用。 (客户普遍赞赏按相同的顺序返回的东西。

此类提供所有可选 SetSequencedSet 操作,并允许 null 元素。 同样HashSet,它为基本操作(以及remove)提供常时性能,containsadd假设哈希函数在存储桶中正确分散元素。 由于维护链接列表的附加费用,性能可能略低于 HashSet该列表,但有一个例外:迭代 LinkedHashSet 需要与集 大小 成正比的时间,而不考虑其容量。 迭代 HashSet 成本可能更高,需要与 容量成正比的时间。

链接哈希集有两个影响其性能的参数: 初始容量负载因子。 它们被确切 HashSet地定义为 。 但是,请注意,对于此类 HashSet来说,为初始容量选择过高值的处罚比此类的严重性要低,因为此类的迭代时间不受容量影响。

<强>请注意,此实现未同步。</strong> 如果多个线程同时访问链接哈希集,并且至少有一个线程修改了该集,则它<>必须</em> 在外部同步。 这通常是通过在自然封装集的某些对象上进行同步来实现的。

如果不存在此类对象,则应使用 Collections#synchronizedSet Collections.synchronizedSet 该方法“包装”集。 最好在创建时执行此操作,以防止意外的未同步访问集:

Set s = Collections.synchronizedSet(new LinkedHashSet(...));

此类 iterator 方法返回的迭代器是 <em>fail-fast</em>:如果在创建迭代器后随时修改集,则迭代器 remove 将引发一个 ConcurrentModificationException。 因此,面对并发修改,迭代器会在将来不确定的时间快速、干净地失败,而不是冒着任意的不确定行为的风险。

请注意,迭代器的故障快速行为无法保证,一般来说,在出现非同步并发修改时,无法做出任何硬保证。 故障快速迭代器会尽力引发 ConcurrentModificationException 。 因此,编写依赖于此异常的程序的正确性是错误的:迭代 器的故障快速行为应仅用于检测 bug。

此类是 Java Collections Framework 的成员。

在 1.4 中添加。

Java文档java.util.LinkedHashSet

本页的某些部分是根据 创建和共享的工作进行的修改,并根据 许可证中所述的条款使用。

构造函数

名称 说明
LinkedHashSet()

构造具有默认初始容量(16)和负载因子(0)的新空链接哈希集。

LinkedHashSet(ICollection)

使用与指定集合相同的元素构造新的链接哈希集。

LinkedHashSet(Int32, Single)

使用指定的初始容量和负载因子构造新的空链接哈希集。

LinkedHashSet(Int32)

构造具有指定初始容量和默认负载因子(0)的新空链接哈希集。

LinkedHashSet(IntPtr, JniHandleOwnership)

创建 JNI 对象的托管表示形式时使用的构造函数;由运行时调用。

属性

名称 说明
Class

返回此 Object的运行时类。

(继承自 Object)
First

要添加

Handle

基础 Android 实例的句柄。

(继承自 Object)
IsEmpty

要添加

(继承自 AbstractCollection)
JniIdentityHashCode

接口的 Set 哈希表和链接列表实现,具有明确定义的遇到顺序。

(继承自 Object)
JniPeerMembers

接口的 Set 哈希表和链接列表实现,具有明确定义的遇到顺序。

Last

要添加

PeerReference

接口的 Set 哈希表和链接列表实现,具有明确定义的遇到顺序。

(继承自 Object)
ThresholdClass

此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。

ThresholdType

此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。

方法

名称 说明
Add(Object)

要添加

(继承自 AbstractCollection)
AddAll(ICollection)

要添加

(继承自 AbstractCollection)
AddFirst(Object)

要添加

AddLast(Object)

要添加

Clear()

要添加

(继承自 AbstractCollection)
Clone()

返回此 HashSet 实例的浅表副本:元素本身不会克隆。

(继承自 HashSet)
Contains(Object)

要添加

(继承自 AbstractCollection)
ContainsAll(ICollection)

要添加

(继承自 AbstractCollection)
Dispose()

接口的 Set 哈希表和链接列表实现,具有明确定义的遇到顺序。

(继承自 Object)
Dispose(Boolean)

接口的 Set 哈希表和链接列表实现,具有明确定义的遇到顺序。

(继承自 Object)
Equals(Object)

指示其他对象是否“等于”此对象。

(继承自 Object)
GetHashCode()

返回对象的哈希代码值。

(继承自 Object)
Iterator()

返回此集中元素的迭代器。

(继承自 HashSet)
JavaFinalize()

当垃圾回收确定不再引用该对象时,由对象上的垃圾回收器调用。

(继承自 Object)
NewLinkedHashSet(Int32)

创建一个新的空 LinkedHashSet,适合预期数量的元素。

Notify()

唤醒正在等待此对象的监视器的单个线程。

(继承自 Object)
NotifyAll()

唤醒正在等待此对象的监视器的所有线程。

(继承自 Object)
Remove(Object)

要添加

(继承自 AbstractCollection)
RemoveAll(ICollection)

要添加

(继承自 AbstractCollection)
RemoveFirst()

要添加

RemoveLast()

要添加

RetainAll(ICollection)

要添加

(继承自 AbstractCollection)
Reversed()

要添加

SetHandle(IntPtr, JniHandleOwnership)

设置 Handle 属性。

(继承自 Object)
Size()

返回此集中的元素数(其基数)。

(继承自 HashSet)
Spliterator()

在此集中的元素上创建 em 后期绑定</em> 和 <em>fail-fast</emSpliterator>。><

(继承自 HashSet)
ToArray()

要添加

(继承自 AbstractCollection)
ToArray(Object[])

要添加

(继承自 AbstractCollection)
ToArray<T>()

接口的 Set 哈希表和链接列表实现,具有明确定义的遇到顺序。

(继承自 Object)
ToString()

返回对象的字符串表示形式。

(继承自 Object)
UnregisterFromRuntime()

接口的 Set 哈希表和链接列表实现,具有明确定义的遇到顺序。

(继承自 Object)
Wait()

使当前线程等待,直到唤醒它,通常是通过 em 通知/em< 或 >em<interrupted>/em<。><>

(继承自 Object)
Wait(Int64, Int32)

使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted>/em<>,或直到经过一定数量的实时。

(继承自 Object)
Wait(Int64)

使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted>/em<>,或直到经过一定数量的实时。

(继承自 Object)

显式接口实现

名称 说明
IJavaPeerable.Disposed()

接口的 Set 哈希表和链接列表实现,具有明确定义的遇到顺序。

(继承自 Object)
IJavaPeerable.DisposeUnlessReferenced()

接口的 Set 哈希表和链接列表实现,具有明确定义的遇到顺序。

(继承自 Object)
IJavaPeerable.Finalized()

接口的 Set 哈希表和链接列表实现,具有明确定义的遇到顺序。

(继承自 Object)
IJavaPeerable.JniManagedPeerState

接口的 Set 哈希表和链接列表实现,具有明确定义的遇到顺序。

(继承自 Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

接口的 Set 哈希表和链接列表实现,具有明确定义的遇到顺序。

(继承自 Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

接口的 Set 哈希表和链接列表实现,具有明确定义的遇到顺序。

(继承自 Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

接口的 Set 哈希表和链接列表实现,具有明确定义的遇到顺序。

(继承自 Object)

扩展方法

名称 说明
GetJniTypeName(IJavaPeerable)

获取实例 self类型的 JNI 名称。

JavaAs<TResult>(IJavaPeerable)

尝试强制self键入TResult,检查强制是否在Java端有效。

JavaCast<TResult>(IJavaObject)

执行 Android 运行时检查的类型转换。

JavaCast<TResult>(IJavaObject)

接口的 Set 哈希表和链接列表实现,具有明确定义的遇到顺序。

ToEnumerable(IIterable)

接口的 Set 哈希表和链接列表实现,具有明确定义的遇到顺序。

ToEnumerable<T>(IIterable)

接口的 Set 哈希表和链接列表实现,具有明确定义的遇到顺序。

TryJavaCast<TResult>(IJavaPeerable, TResult)

尝试强制self键入TResult,检查强制是否在Java端有效。

适用于