HashMap Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Реализация интерфейса на основе Map хэш-таблицы.
[Android.Runtime.Register("java/util/HashMap", DoNotGenerateAcw=true)]
[Java.Interop.JavaTypeParameters(new System.String[] { "K", "V" })]
public class HashMap : Java.Util.AbstractMap, IDisposable, Java.Interop.IJavaPeerable, Java.IO.ISerializable, Java.Lang.ICloneable
[<Android.Runtime.Register("java/util/HashMap", DoNotGenerateAcw=true)>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "K", "V" })>]
type HashMap = class
inherit AbstractMap
interface ISerializable
interface IJavaObject
interface IDisposable
interface IJavaPeerable
interface ICloneable
interface IMap
- Наследование
- Производный
- Атрибуты
- Реализации
Комментарии
Реализация интерфейса на основе Map хэш-таблицы. Эта реализация предоставляет все необязательные операции карты и разрешает null значения и null ключ. (Класс HashMap примерно эквивалентен Hashtable, за исключением того, что он несинхронизирован и разрешает значения NULL.) Этот класс не гарантирует порядок карты; В частности, это не гарантирует, что заказ будет оставаться постоянным с течением времени.
Эта реализация обеспечивает производительность постоянного времени для основных операций (get и put), при условии, что хэш-функция распределяет элементы должным образом между контейнерами. Для итерации по представлениям коллекции требуется время, пропорциональное "емкости" HashMap экземпляра (количество контейнеров), а также его размер (количество сопоставлений "ключ-значение"). Таким образом, очень важно не задавать начальную емкость слишком высокой (или слишком низкую нагрузку), если производительность итерации важна.
Экземпляр имеет два параметра, влияющих HashMap на производительность: начальную емкость и коэффициент загрузки. Емкость — это количество контейнеров в хэш-таблице, а начальная емкость — это просто емкость во время создания хэш-таблицы. Коэффициент нагрузки — это мера того, насколько полная хэш-таблица может получить до автоматического увеличения его емкости. Если число записей в хэш-таблице превышает произведение коэффициента нагрузки и текущей емкости, хэш-таблица перенашивается (то есть внутренние структуры данных перестроены), чтобы хэш-таблица была примерно в два раза больше.
Как правило, коэффициент нагрузки по умолчанию (.75) обеспечивает хороший компромисс между затратами на время и пространство. Более высокие значения снижают затраты на пространство, но увеличивают затраты на поиск (отраженные в большинстве операций HashMap класса, включая get и put). Ожидаемое количество записей в карте и его коэффициент нагрузки следует учитывать при настройке начальной емкости, чтобы свести к минимуму количество операций повторной косой черты. Если начальная емкость превышает максимальное количество записей, разделенных на коэффициент нагрузки, операции повторной косой черты никогда не будут выполняться.
Если в экземпляре HashMap должно храниться множество сопоставлений, создание его с достаточно большой емкостью позволит более эффективно хранить сопоставления, чем позволит выполнять автоматическую перезахватку по мере необходимости для увеличения таблицы. Обратите внимание, что использование нескольких ключей с hashCode() одинаковым способом замедления производительности любой хэш-таблицы. Чтобы повысить эффективность, если ключи имеют Comparableзначение, этот класс может использовать порядок сравнения между ключами, чтобы помочь разорвать связи.
<Обратите>внимание, что эта реализация не синхронизирована.</strong> , если несколько потоков одновременно обращаются к хэш-карте, и по крайней мере один из потоков изменяет схему структурно, она должна быть синхронизирована внешне. (Структурное изменение — это любая операция, которая добавляет или удаляет одно или несколько сопоставлений; простое изменение значения, связанного с ключом, который уже содержит экземпляр, не является структурным изменением.) Обычно это достигается путем синхронизации с некоторым объектом, который естественно инкапсулирует карту.
Если такой объект не существует, карта должна быть "упакована" с помощью Collections#synchronizedMap Collections.synchronizedMap метода. Это лучше всего сделать во время создания, чтобы предотвратить случайный несинхронизированный доступ к карте:
Map m = Collections.synchronizedMap(new HashMap(...));
Итераторы, возвращаемые всеми методами представления коллекции этого класса, завершаются сбоем: если карта структурно изменяется в любое время после создания итератора, в любом случае, за исключением собственного remove метода итератора, итератор вызовет ConcurrentModificationExceptionитератор. Таким образом, перед лицом параллельного изменения итератор завершается сбоем быстро и чисто, а не рискуя произвольным, недетерминированным поведением в будущем.
Обратите внимание, что поведение итератора не может быть гарантировано, как правило, невозможно сделать какие-либо жесткие гарантии в присутствии несинхронизированных одновременных изменений. Отработки отказа быстрой итерации создаются ConcurrentModificationException на основе лучших усилий. Поэтому было бы неправильно написать программу, которая зависит от этого исключения для его правильности: поведение итераторов должно использоваться только для обнаружения ошибок.
Этот класс является членом Платформы коллекций Java.
Добавлено в версии 1.2.
Документация по Java для java.util.HashMap.
Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.
Конструкторы
| HashMap() |
Создает пустое |
| HashMap(IDictionary) |
Создает новое |
| HashMap(Int32) |
Создает пустое |
| HashMap(Int32, Single) |
Создает пустой |
| HashMap(IntPtr, JniHandleOwnership) |
Конструктор, используемый при создании управляемых представлений объектов JNI; вызывается средой выполнения. |
Свойства
| Class |
Возвращает класс среды выполнения этого |
| Handle |
Дескриптор базового экземпляра Android. (Унаследовано от Object) |
| IsEmpty |
Добавление (Унаследовано от AbstractMap) |
| JniIdentityHashCode |
Реализация интерфейса на основе |
| JniPeerMembers |
Реализация интерфейса на основе |
| PeerReference |
Реализация интерфейса на основе |
| ThresholdClass |
Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода. |
| ThresholdType |
Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода. |
Методы
| Clear() |
Добавление (Унаследовано от AbstractMap) |
| Clone() |
Возвращает неглубокую копию этого |
| Compute(Object, IBiFunction) |
Реализация интерфейса на основе |
| ComputeIfAbsent(Object, IFunction) |
Реализация интерфейса на основе |
| ComputeIfPresent(Object, IBiFunction) |
Реализация интерфейса на основе |
| ContainsKey(Object) |
Добавление (Унаследовано от AbstractMap) |
| ContainsValue(Object) |
Добавление (Унаследовано от AbstractMap) |
| Dispose() |
Реализация интерфейса на основе |
| Dispose(Boolean) |
Реализация интерфейса на основе |
| EntrySet() |
|
| Equals(Object) |
Указывает, равен ли другой объект этому объекту. (Унаследовано от Object) |
| ForEach(IBiConsumer) |
Реализация интерфейса на основе |
| Get(Object) |
Добавление (Унаследовано от AbstractMap) |
| GetHashCode() |
Возвращает значение хэш-кода для объекта. (Унаследовано от Object) |
| GetOrDefault(Object, Object) |
Реализация интерфейса на основе |
| JavaFinalize() |
Вызывается сборщиком мусора в объекте, когда сборка мусора определяет, что больше ссылок на объект нет. (Унаследовано от Object) |
| KeySet() |
Добавление (Унаследовано от AbstractMap) |
| Merge(Object, Object, IBiFunction) |
Реализация интерфейса на основе |
| Notify() |
Пробуждение одного потока, ожидающего монитора этого объекта. (Унаследовано от Object) |
| NotifyAll() |
Просыпает все потоки, ожидающие монитора этого объекта. (Унаследовано от Object) |
| Put(Object, Object) |
Добавление (Унаследовано от AbstractMap) |
| PutAll(IDictionary) |
Добавление (Унаследовано от AbstractMap) |
| PutIfAbsent(Object, Object) |
Реализация интерфейса на основе |
| Remove(Object) |
Добавление (Унаследовано от AbstractMap) |
| Remove(Object, Object) |
Удаляет сопоставление указанного ключа из этой карты при наличии. |
| Replace(Object, Object) |
Реализация интерфейса на основе |
| Replace(Object, Object, Object) |
Реализация интерфейса на основе |
| ReplaceAll(IBiFunction) |
Реализация интерфейса на основе |
| SetHandle(IntPtr, JniHandleOwnership) |
Задает свойство Handle. (Унаследовано от Object) |
| Size() |
Добавление (Унаследовано от AbstractMap) |
| ToArray<T>() |
Реализация интерфейса на основе |
| ToString() |
Возвращает строковое представление объекта. (Унаследовано от Object) |
| UnregisterFromRuntime() |
Реализация интерфейса на основе |
| Values() |
Добавление (Унаследовано от AbstractMap) |
| Wait() |
Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, при <>помощи уведомления</em> или <эм>прерванного</em>. (Унаследовано от Object) |
| Wait(Int64) |
Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, при <>получении уведомления</>em или <>эм прервано< или> до тех пор, пока не истекло определенное количество реального времени. (Унаследовано от Object) |
| Wait(Int64, Int32) |
Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, при <>получении уведомления</>em или <>эм прервано< или> до тех пор, пока не истекло определенное количество реального времени. (Унаследовано от Object) |
Явные реализации интерфейса
| IJavaPeerable.Disposed() |
Реализация интерфейса на основе |
| IJavaPeerable.DisposeUnlessReferenced() |
Реализация интерфейса на основе |
| IJavaPeerable.Finalized() |
Реализация интерфейса на основе |
| IJavaPeerable.JniManagedPeerState |
Реализация интерфейса на основе |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
Реализация интерфейса на основе |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Реализация интерфейса на основе |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
Реализация интерфейса на основе |
Методы расширения
| JavaCast<TResult>(IJavaObject) |
Выполняет преобразование типа, проверяемого средой выполнения Android. |
| JavaCast<TResult>(IJavaObject) |
Реализация интерфейса на основе |
| GetJniTypeName(IJavaPeerable) |
Реализация интерфейса на основе |