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.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 ISequencedSet
interface ISequencedCollection
interface ICollection
interface IIterable
interface ISet
- Наследование
- Атрибуты
- Реализации
Комментарии
Хэш-таблица и реализация связанного Set списка интерфейса с четко определенным порядком встреч. Эта реализация отличается от HashSet того, что она поддерживает двукратный связанный список, выполняющийся через все его записи. Этот связанный список определяет порядок встречи (порядок итерации), который является порядком вставки элементов в набор (insertion-order). Самый последний вставленный элемент (старший) является первым, и самый младший элемент является последним. Обратите внимание, что порядок встреч не влияет, если элемент повторно вставляется в набор с add помощью метода. (Элемент e повторно добавляется в набор s , если s.add(e) вызывается, когда s.contains(e) возвращается true непосредственно перед вызовом.) Обратное упорядоченное представление этого набора находится в противоположном порядке, с самым молодым элементом, появляющимся первым и самым старшим элементом, появляющимся последним. Порядок встреч элементов, уже в наборе, можно изменить с помощью #addFirst addFirst методов и #addLast addLast методов.
Эта реализация избавляет своих клиентов от неуказанный, как правило, хаотический порядок, предоставляемый HashSet, не влечет за собой увеличение затрат, связанных с TreeSet. Его можно использовать для создания копии набора, имеющего тот же порядок, что и исходный, независимо от реализации исходного набора:
{@code
void foo(Set<String> s) {
Set<String> copy = new LinkedHashSet<>(s);
...
}
}
Этот метод особенно полезен, если модуль принимает набор входных данных, копирует его, а затем возвращает результаты, порядок которых определяется копией. (Клиенты, как правило, ценят наличие вещей, возвращаемых в том же порядке, что они были представлены.)
Этот класс предоставляет все необязательные Set и SequencedSet операции, а также разрешает пустые элементы. НапримерHashSet, он обеспечивает производительность постоянного времени для основных операций (addcontainsиremove), при условии, что хэш-функция распределяет элементы правильно между контейнерами. Производительность, скорее всего, немного ниже 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 на основе лучших усилий. Поэтому было бы неправильно написать программу, которая зависит от этого исключения для его правильности: поведение итераторов должно использоваться только для обнаружения ошибок.
Этот класс является членом Платформы коллекций Java.
Добавлено в версии 1.4.
Java документации по java.util.LinkedHashSet.
Части этой страницы — это изменения на основе работы, созданной и общей Project и используемых в соответствии с условиями, описанными в разделе "".
Конструкторы
| Имя. | Описание |
|---|---|
| LinkedHashSet() |
Создает новый, пустой связанный хэш с начальной емкостью по умолчанию (16) и коэффициентом загрузки (0). |
| LinkedHashSet(ICollection) |
Создает новый связанный хэш-набор с теми же элементами, что и указанная коллекция. |
| LinkedHashSet(Int32, Single) |
Создает новый, пустой связанный хэш с указанным начальным коэффициентом емкости и нагрузки. |
| LinkedHashSet(Int32) |
Создает новый, пустой связанный хэш с указанной начальной емкостью и коэффициентом нагрузки по умолчанию (0). |
| LinkedHashSet(IntPtr, JniHandleOwnership) |
Конструктор, используемый при создании управляемых представлений объектов JNI; вызывается средой выполнения. |
Свойства
| Имя. | Описание |
|---|---|
| Class |
Возвращает класс среды выполнения этого |
| First |
Добавление |
| Handle |
Дескриптор базового экземпляра Android. (Унаследовано от Object) |
| IsEmpty |
Добавление (Унаследовано от AbstractCollection) |
| JniIdentityHashCode |
Возвращает хэш-код удостоверения, назначенный этому Java одноранговой среде выполнения взаимодействия. (Унаследовано от Object) |
| JniManagedPeerState |
Хэш-таблица и реализация связанного |
| JniPeerMembers |
Хэш-таблица и реализация связанного |
| Last |
Добавление |
| PeerReference |
Возвращает ссылку на объект JNI для этого Java однорангового узла. (Унаследовано от Object) |
| ThresholdClass |
Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода. |
| ThresholdType |
Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода. |
Методы
| Имя. | Описание |
|---|---|
| Add(Object) |
Добавление (Унаследовано от AbstractCollection) |
| AddAll(ICollection) |
Добавление (Унаследовано от AbstractCollection) |
| AddFirst(Object) |
Добавление |
| AddLast(Object) |
Добавление |
| Clear() |
Добавление (Унаследовано от AbstractCollection) |
| Clone() |
Возвращает неглубокую копию этого |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
Хэш-таблица и реализация связанного |
| Contains(Object) |
Добавление (Унаследовано от AbstractCollection) |
| ContainsAll(ICollection) |
Добавление (Унаследовано от AbstractCollection) |
| Dispose() |
Освобождает ресурсы, удерживаемые этим Java одноранговым узлом. (Унаследовано от Object) |
| Dispose(Boolean) |
Освобождает ресурсы, удерживаемые этим Java одноранговым узлом. (Унаследовано от Object) |
| DisposeUnlessReferenced() |
Хэш-таблица и реализация связанного |
| Equals(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) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
Хэш-таблица и реализация связанного |
| Size() |
Возвращает количество элементов в этом наборе (его кратность). (Унаследовано от HashSet) |
| Spliterator() |
<
>Создает em late-binding</em> и <em-fail-fast></em> |
| ToArray() |
Добавление (Унаследовано от AbstractCollection) |
| ToArray(Object[]) |
Добавление (Унаследовано от AbstractCollection) |
| ToArray<T>() |
Создает управляемый массив из этого Java оболочки массива. (Унаследовано от Object) |
| ToString() |
Возвращает строковое представление объекта. (Унаследовано от Object) |
| UnregisterFromRuntime() |
Отменяет регистрацию этого Java однорангового узла из среды выполнения взаимодействия. (Унаследовано от Object) |
| Wait() |
Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, при <>помощи уведомления</em> или <эм>прерванного</em>. (Унаследовано от Object) |
| Wait(Int64, Int32) |
Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, при <>получении уведомления</>em или <>эм прервано< или> до тех пор, пока не истекло определенное количество реального времени. (Унаследовано от Object) |
| Wait(Int64) |
Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, при <>получении уведомления</>em или <>эм прервано< или> до тех пор, пока не истекло определенное количество реального времени. (Унаследовано от Object) |
Явные реализации интерфейса
| Имя. | Описание |
|---|---|
| IJavaPeerable.Disposed() |
Хэш-таблица и реализация связанного |
| IJavaPeerable.Finalized() |
Хэш-таблица и реализация связанного |
| IJavaPeerable.JniObjectReferenceControlBlock |
Хэш-таблица и реализация связанного |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
Хэш-таблица и реализация связанного |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Хэш-таблица и реализация связанного |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
Хэш-таблица и реализация связанного |
| IJavaPeerable.UnregisterFromRuntime() |
Хэш-таблица и реализация связанного |
Методы расширения
| Имя. | Описание |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Возвращает имя JNI типа экземпляра |
| JavaAs<TResult>(IJavaPeerable) |
Попробуйте принуждать к типу |
| JavaCast<TResult>(IJavaObject) |
Выполняет преобразование типа, проверяемого средой выполнения Android. |
| JavaCast<TResult>(IJavaObject) |
Хэш-таблица и реализация связанного |
| ToEnumerable(IIterable) |
Возвращает итерацию IEnumerable по JavaIIterable, позволяя |
| ToEnumerable<T>(IIterable) |
Возвращает итерацию IEnumerable<T> по JavaIIterable, маршалинг каждого элемента |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Попробуйте принуждать к типу |