HashMap Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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 ConcurrentModificationException
arquivo . 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(IDictionary) |
Constrói um novo |
HashMap(Int32) |
Constrói um vazio |
HashMap(Int32, Single) |
Constrói um vazio |
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 |
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 |
JniPeerMembers |
Implementação baseada em tabela de hash da |
PeerReference |
Implementação baseada em tabela de hash da |
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 |
Compute(Object, IBiFunction) |
Implementação baseada em tabela de hash da |
ComputeIfAbsent(Object, IFunction) |
Implementação baseada em tabela de hash da |
ComputeIfPresent(Object, IBiFunction) |
Implementação baseada em tabela de hash da |
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 |
Dispose(Boolean) |
Implementação baseada em tabela de hash da |
EntrySet() |
Retorna uma |
Equals(Object) |
Indica se algum outro objeto é "igual" a este. (Herdado de Object) |
ForEach(IBiConsumer) |
Implementação baseada em tabela de hash da |
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 |
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 |
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 |
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 |
Replace(Object, Object, Object) |
Implementação baseada em tabela de hash da |
ReplaceAll(IBiFunction) |
Implementação baseada em tabela de hash da |
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 |
ToString() |
Retorna uma representação de cadeia de caracteres do objeto. (Herdado de Object) |
UnregisterFromRuntime() |
Implementação baseada em tabela de hash da |
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 |
IJavaPeerable.DisposeUnlessReferenced() |
Implementação baseada em tabela de hash da |
IJavaPeerable.Finalized() |
Implementação baseada em tabela de hash da |
IJavaPeerable.JniManagedPeerState |
Implementação baseada em tabela de hash da |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
Implementação baseada em tabela de hash da |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Implementação baseada em tabela de hash da |
IJavaPeerable.SetPeerReference(JniObjectReference) |
Implementação baseada em tabela de hash da |
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 |
GetJniTypeName(IJavaPeerable) |
Implementação baseada em tabela de hash da |