Compartilhar via


HashMap Classe

Definição

Implementação baseada em tabela de hash da Map interface.

[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
Herança
Derivado
Atributos
Implementações

Comentários

Implementação baseada em tabela de hash da Map interface. Essa implementação fornece todas as operações de mapa opcionais e permite null valores e a null chave. (A HashMap classe é aproximadamente equivalente a Hashtable, exceto que ela não é sincronizada e permite nulos.) Esta classe não dá garantias quanto à ordem do mapa; em particular, não garante que a ordem permanecerá constante ao longo do tempo.

Essa implementação fornece desempenho em tempo constante para as operações básicas (get e put), supondo que a função hash disperse os elementos corretamente entre os buckets. A iteração sobre exibições de coleção requer tempo proporcional à "capacidade" da HashMap instância (o número de buckets) mais seu tamanho (o número de mapeamentos chave-valor). Assim, é muito importante não definir a capacidade inicial muito alta (ou o fator de carga muito baixo) se o desempenho da iteração for importante.

Uma instância de tem dois parâmetros que afetam seu desempenho: capacidade inicial e fator de HashMap carga. A capacidade é o número de buckets na tabela de hash, e a capacidade inicial é simplesmente a capacidade no momento em que a tabela de hash é criada. O fator de carga é uma medida de quão cheia a tabela de hash pode ficar antes que sua capacidade seja aumentada automaticamente. Quando o número de entradas na tabela de hash excede o produto do fator de carga e a capacidade atual, a tabela de hash é rehashed (ou seja, as estruturas de dados internas são recriadas) para que a tabela de hash tenha aproximadamente o dobro do número de buckets.

Como regra geral, o fator de carga padrão (.75) oferece uma boa compensação entre custos de tempo e espaço. Valores mais altos diminuem a sobrecarga de espaço, mas aumentam o custo de pesquisa (refletido na maioria das operações da HashMap classe, incluindo get e put). O número esperado de entradas no mapa e seu fator de carga devem ser levados em conta ao definir sua capacidade inicial, de modo a minimizar o número de operações de rehash. Se a capacidade inicial for maior que o número máximo de entradas dividido pelo fator de carga, nenhuma operação de rehash ocorrerá.

Se muitos mapeamentos forem armazenados em uma HashMap instância, criá-la com uma capacidade suficientemente grande permitirá que os mapeamentos sejam armazenados com mais eficiência do que permitir que ela execute rehashing automático conforme necessário para aumentar a tabela. Observe que usar muitas teclas com a mesma hashCode() é uma maneira segura de diminuir o desempenho de qualquer tabela de hash. Para melhorar o impacto, quando as chaves são Comparable, essa classe pode usar a ordem de comparação entre as chaves para ajudar a quebrar laços.

<forte>Observe que essa implementação não está sincronizada.</strong> Se vários threads acessarem um mapa de hash simultaneamente e pelo menos um dos threads modificar o mapa estruturalmente, ele deverá ser sincronizado externamente. (Uma modificação estrutural é qualquer operação que adiciona ou exclui um ou mais mapeamentos; simplesmente alterar o valor associado a uma chave que uma instância já contém não é uma modificação estrutural.) Isso normalmente é realizado sincronizando em algum objeto que encapsula naturalmente o mapa.

Se esse objeto não existir, o mapa deve ser "empacotado" usando o Collections#synchronizedMap Collections.synchronizedMap método. Isso é melhor feito no momento da criação, para evitar acesso acidental não sincronizado ao mapa:

Map m = Collections.synchronizedMap(new HashMap(...));

Os iteradores retornados por todos os "métodos de exibição de coleção" dessa classe são fail-fast: se o mapa for modificado estruturalmente a qualquer momento depois que o iterador for criado, de qualquer forma, exceto através do próprio remove método do iterador, o iterador lançará um ConcurrentModificationExceptionarquivo . Assim, diante da modificação simultânea, o iterador falha rápida e limpamente, em vez de arriscar um comportamento arbitrário e não determinista em um momento indeterminado no futuro.

Observe que o comportamento de falha rápida de um iterador não pode ser garantido, pois é, de modo geral, impossível fazer quaisquer garantias rígidas na presença de modificação simultânea não sincronizada. Os iteradores rápidos lançam ConcurrentModificationException com base no melhor esforço. Portanto, seria errado escrever um programa que dependesse dessa exceção para sua correção: o comportamento rápido de iteradores deve ser usado apenas para detectar bugs.

Essa classe é membro do Java Collections Framework.

Adicionado em 1.2.

Documentação Java para java.util.HashMap.

Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Android Open Source Project e usado de acordo com os termos descritos na Creative Commons 2.5 Attribution License.

Construtores

HashMap()

Constrói um vazio HashMap com a capacidade inicial padrão (16) e o fator de carga padrão (0.

HashMap(IDictionary)

Constrói um novo HashMap com os mesmos mapeamentos que o especificado Map.

HashMap(Int32)

Constrói um vazio HashMap com a capacidade inicial especificada e o fator de carga padrão (0.

HashMap(Int32, Single)

Constrói um vazio HashMap com a capacidade inicial especificada e o fator de carga.

HashMap(IntPtr, JniHandleOwnership)

Um construtor usado ao criar representações gerenciadas de objetos JNI; chamado pelo tempo de execução.

Propriedades

Class

Retorna a classe de tempo de execução deste Object.

(Herdado de Object)
Handle

O identificador para a instância subjacente do Android.

(Herdado de Object)
IsEmpty

A ser adicionado

(Herdado de AbstractMap)
JniIdentityHashCode

Implementação baseada em tabela de hash da Map interface.

(Herdado de Object)
JniPeerMembers

Implementação baseada em tabela de hash da Map interface.

PeerReference

Implementação baseada em tabela de hash da Map interface.

(Herdado de Object)
ThresholdClass

Esta API suporta a infraestrutura Mono para Android e não se destina a ser usada diretamente do seu código.

ThresholdType

Esta API suporta a infraestrutura Mono para Android e não se destina a ser usada diretamente do seu código.

Métodos

Clear()

A ser adicionado

(Herdado de AbstractMap)
Clone()

Retorna uma cópia superficial dessa HashMap instância: as chaves e os valores em si não são clonados.

Compute(Object, IBiFunction)

Implementação baseada em tabela de hash da Map interface.

ComputeIfAbsent(Object, IFunction)

Implementação baseada em tabela de hash da Map interface.

ComputeIfPresent(Object, IBiFunction)

Implementação baseada em tabela de hash da Map interface.

ContainsKey(Object)

A ser adicionado

(Herdado de AbstractMap)
ContainsValue(Object)

A ser adicionado

(Herdado de AbstractMap)
Dispose()

Implementação baseada em tabela de hash da Map interface.

(Herdado de Object)
Dispose(Boolean)

Implementação baseada em tabela de hash da Map interface.

(Herdado de Object)
EntrySet()

Retorna uma Set exibição dos mapeamentos contidos neste mapa.

Equals(Object)

Indica se algum outro objeto é "igual" a este.

(Herdado de Object)
ForEach(IBiConsumer)

Implementação baseada em tabela de hash da Map interface.

Get(Object)

A ser adicionado

(Herdado de AbstractMap)
GetHashCode()

Retorna um valor de código hash para o objeto.

(Herdado de Object)
GetOrDefault(Object, Object)

Implementação baseada em tabela de hash da Map interface.

JavaFinalize()

Chamado pelo coletor de lixo em um objeto quando a coleta de lixo determina que não há mais referências ao objeto.

(Herdado de Object)
KeySet()

A ser adicionado

(Herdado de AbstractMap)
Merge(Object, Object, IBiFunction)

Implementação baseada em tabela de hash da Map interface.

Notify()

Ativa um único thread que está aguardando no monitor deste objeto.

(Herdado de Object)
NotifyAll()

Ativa todos os threads que estão aguardando no monitor deste objeto.

(Herdado de Object)
Put(Object, Object)

A ser adicionado

(Herdado de AbstractMap)
PutAll(IDictionary)

A ser adicionado

(Herdado de AbstractMap)
PutIfAbsent(Object, Object)

Implementação baseada em tabela de hash da Map interface.

Remove(Object)

A ser adicionado

(Herdado de AbstractMap)
Remove(Object, Object)

Remove o mapeamento da chave especificada deste mapa, se presente.

Replace(Object, Object)

Implementação baseada em tabela de hash da Map interface.

Replace(Object, Object, Object)

Implementação baseada em tabela de hash da Map interface.

ReplaceAll(IBiFunction)

Implementação baseada em tabela de hash da Map interface.

SetHandle(IntPtr, JniHandleOwnership)

Define a propriedade Handle.

(Herdado de Object)
Size()

A ser adicionado

(Herdado de AbstractMap)
ToArray<T>()

Implementação baseada em tabela de hash da Map interface.

(Herdado de Object)
ToString()

Retorna uma representação de cadeia de caracteres do objeto.

(Herdado de Object)
UnregisterFromRuntime()

Implementação baseada em tabela de hash da Map interface.

(Herdado de Object)
Values()

A ser adicionado

(Herdado de AbstractMap)
Wait()

Faz com que o thread atual aguarde até que ele seja ativado, normalmente sendo <em notificado</em> ou <em>interrompido</em>>.

(Herdado de Object)
Wait(Int64)

Faz com que o thread atual aguarde até que ele seja despertado, normalmente sendo <em>notificado</em> ou <em interrompido</em>, ou até que>uma certa quantidade de tempo real tenha decorrido.

(Herdado de Object)
Wait(Int64, Int32)

Faz com que o thread atual aguarde até que ele seja despertado, normalmente sendo <em>notificado</em> ou <em interrompido</em>, ou até que>uma certa quantidade de tempo real tenha decorrido.

(Herdado de Object)

Implantações explícitas de interface

IJavaPeerable.Disposed()

Implementação baseada em tabela de hash da Map interface.

(Herdado de Object)
IJavaPeerable.DisposeUnlessReferenced()

Implementação baseada em tabela de hash da Map interface.

(Herdado de Object)
IJavaPeerable.Finalized()

Implementação baseada em tabela de hash da Map interface.

(Herdado de Object)
IJavaPeerable.JniManagedPeerState

Implementação baseada em tabela de hash da Map interface.

(Herdado de Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Implementação baseada em tabela de hash da Map interface.

(Herdado de Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Implementação baseada em tabela de hash da Map interface.

(Herdado de Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

Implementação baseada em tabela de hash da Map interface.

(Herdado de Object)

Métodos de Extensão

JavaCast<TResult>(IJavaObject)

Executa uma conversão de tipo verificada em tempo de execução do Android.

JavaCast<TResult>(IJavaObject)

Implementação baseada em tabela de hash da Map interface.

GetJniTypeName(IJavaPeerable)

Implementação baseada em tabela de hash da Map interface.

Aplica-se a