Abaixo estão os valores contidos no HashMap
statusName {Active=33, Renewals Completed=3, Application=15}
Código Java para obter a primeira chave (ou seja, ativa)
Object myKey = statusName.keySet().toArray()[0];
Como podemos coletar o primeiro "Valor" da chave (ou seja, 33), quero armazenar a "Chave" e o "Valor" em uma variável separada.
HashMap
entradas não estão ordenadas e, portanto, o "primeiro" pode mudar sempre que você modificar o mapa?HashMap
? Se você modificá-lo, poderá obter os resultados em uma ordem completamente diferente.Respostas:
Você pode tentar isto:
Lembre-se de
HashMap
que não garante o pedido de inserção. Use umLinkedHashMap
para manter o pedido intacto.Por exemplo:
Resultado:
fonte
com.google.gson.internal.LinkedTreeMap cannot be cast to...
... minha classe que eu declarei em vez deString
no lugar certo ... não consigo encontrar a resposta onlineGson
para converter o objeto de valor em aString
e, em seguida, analisei-o de volta para o meu tipo de classe. É feio, mas eu realmente não consegui encontrar nenhuma outra solução para algo que é tão fácil de fazer em outras linguagens (estou aprendendo Java agora)Para obter o "primeiro" valor:
Para obter o valor da "primeira" chave:
Nota: o código acima foi testado e funciona.
Digo "primeiro" porque as entradas do HashMap não são ordenadas.
No entanto, um LinkedHashMap itera suas entradas na mesma ordem em que foram inseridas - você pode usar isso para a implementação do mapa se a ordem de inserção for importante.
fonte
Maneira de fazer Java 8,
String firstKey = map.keySet().stream().findFirst().get();
fonte
Você também pode tentar fazer isso para obter a primeira entrada inteira,
Isso para obter apenas a chave da primeira entrada,
Isso para obter apenas o valor da primeira entrada,
Além disso, caso você saiba o que está fazendo e deseja obter o segundo (o mesmo para o terceiro, etc.) item de um mapa, você deve tentar isso,
fonte
Usando
youMap.get(keyYouHave)
, você pode obter o valor disso.Sim, você pode atribuir isso a uma variável.
Espere ... não acabou.
Se você (lógica de negócios) estiver dependendo da ordem de inserções e recuperação, verá resultados estranhos. O mapa não está ordenado, eles não armazenarão em um pedido. Esteja ciente desse fato. Use alguma alternativa para preservar seu pedido. Provavelmente um
LinkedHashMap
fonte
Observe que você deve observar que seu fluxo lógico nunca deve depender do acesso aos
HashMap
elementos em alguma ordem, simplesmente coloque porqueHashMap
s não são ordenadosCollection
s e não é isso que eles pretendem fazer. (Você pode ler mais sobre coleções odered e classific neste artigo ).Voltando ao post, você já fez metade do trabalho carregando a primeira chave do elemento:
Basta ligar
map.get(key)
para obter o respectivo valor:fonte
Lembre-se de que a ordem de inserção não é respeitada em um mapa em geral. Experimente isto:
Eu uso isso apenas quando tenho certeza disso
map.size() == 1
.fonte
Melhorando a resposta de whoami. Como
findFirst()
retorna umOptional
, é uma boa prática verificar se há um valor.Além disso, alguns comentaram que encontrar a primeira chave de a
HashSet
não é confiável. Mas às vezes temosHashMap
pares; ou seja, em cada mapa temos uma chave e um valor. Nesses casos, é conveniente encontrar rapidamente a primeira chave desse par.fonte
Também é uma boa maneira de fazer isso :)
fonte
Você também pode tentar abaixo:
fonte