Eu tenho um Hashmap em Java como este:
private Map<String, Integer> team1 = new HashMap<String, Integer>();
Então eu preencho assim:
team1.put("United", 5);
Como posso obter as chaves? Algo como: team1.getKey()
retornar "United".
java
data-structures
java-6
masb
fonte
fonte
team1.getKey()
retornar se: (1) o mapa estiver vazio ou (2) se ele contiver várias chaves?int
deve ser usado para os únicos como este.Respostas:
A
HashMap
contém mais de uma chave. Você pode usarkeySet()
para obter o conjunto de todas as chaves.irá armazenar
1
com chave"foo"
e2
com chave"bar"
. Para iterar sobre todas as chaves:irá imprimir
"foo"
e"bar"
.fonte
List<String> keys = new ArrayList<>(mLoginMap.keySet());
Isso é possível, pelo menos em teoria, se você souber o índice:
keySet()
retorna um conjunto, para que você converta o conjunto em uma matriz.O problema, é claro, é que um conjunto não promete manter seu pedido. Se você possui apenas um item no seu HashMap, é bom, mas se tiver mais do que isso, é melhor percorrer o mapa, como outras respostas.
fonte
HashMap
. Bom show.Verifique isso.
https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html
(Use
java.util.Objects.equals
porque o HashMap pode conternull
)Usando JDK8 +
Mais "genérico" e o mais seguro possível
Ou se você estiver no JDK7.
fonte
HashMap
chaves são únicas.Você pode recuperar todas as
Map
chaves 's usando o métodokeySet()
. Agora, se o que você precisa é obter uma chave devido ao seu valor , isso é uma questão completamente diferente eMap
não o ajudará lá; você precisaria de uma estrutura de dados especializada, comoBidiMap
(um mapa que permita a pesquisa bidirecional entre chave e valores) da Apache's Commons Collections - também esteja ciente de que várias chaves diferentes podem ser mapeadas para o mesmo valor.fonte
Como você deseja obter o argumento (
United
) para o qual o valor é fornecido (5
), você também pode considerar o uso de mapa bidirecional (por exemplo, fornecido pelo Guava: http://docs.guava-libraries.googlecode.com/git/javadoc/com/google /common/collect/BiMap.html ).fonte
Se você só precisa de algo simples e mais de uma verificação.
Então você pode procurar por qualquer chave.
fonte
fonte
next()
duas vezes no loop significa que você imprimirá as teclas com números ímpares junto com os valores pares.Use a operação funcional para uma iteração mais rápida.
team1.keySet().forEach((key) -> { System.out.println(key); });
fonte
Uma solução pode ser, se você souber a posição da chave, converter as chaves em uma matriz String e retornar o valor na posição:
fonte
Experimente este programa simples:
fonte
fonte
Para obter chaves no HashMap, temos o método keySet () que está presente no
java.util.Hashmap
pacote. ex:Agora, as chaves terão todas as suas chaves disponíveis no mapa. ex: [tecla1, tecla2]
fonte
java,util.HashMap
é uma classe, não um pacote, e não há nada aqui que não estivesse aqui cinco anos atrás.O que vou fazer é muito simples, mas desperdiçar memória é mapear os valores com uma chave e fazer o contrário para mapear as chaves com um valor que faz isso:
private Map<Object, Object> team1 = new HashMap<Object, Object>();
é importante que você use
<Object, Object>
para que você possa mapearkeys:Value
eValue:Keys
assimteam1.put("United", 5);
team1.put(5, "United");
Então, se você usar
team1.get("United") = 5
eteam1.get(5) = "United"
Mas se você usar algum método específico em um dos objetos nos pares, será melhor se você fizer outro mapa:
private Map<String, Integer> team1 = new HashMap<String, Integer>();
private Map<Integer, String> team1Keys = new HashMap<Integer, String>();
e depois
team1.put("United", 5);
team1Keys.put(5, "United");
e lembre-se, mantenha-o simples;)
fonte
Para obter Key e seu valor
por exemplo
Irá imprimir: Chave: United Valor: 5 Chave: Barcelona Valor: 6
fonte