Atualizando uma entrada de mapa java
Pergunta
Eu estou enfrentando um problema que parece não ter solução straighforward.
Eu estou usando java.util.Map
, e eu quero atualizar o valor em um par chave-valor.
Agora, eu estou fazendo isso lik isso:
private Map<String,int> table = new HashMap<String,int>();
public void update(String key, int val) {
if( !table.containsKey(key) ) return;
Entry<String,int> entry;
for( entry : table.entrySet() ) {
if( entry.getKey().equals(key) ) {
entry.setValue(val);
break;
}
}
}
Assim, há algum método para que eu possa obter o objeto Entry
necessário sem ter que percorrer todo o Map
? Ou há alguma maneira de atualizar o valor da entrada em vigor? Algum método em Map
como setValue(String key, int val)
?
JRH
Solução
Use
table.put(key, val);
para adicionar uma nova chave valor par / ou substituir um valor de chave existente.
A partir do Javadocs:
V put (chave K, valor V): Associa o valor especificado com a chave especificada neste mapa (operação opcional). Se o mapa contido previamente um mapeamento para a chave, o valor antigo é substituído pelo valor especificado. (Um mapa m é dito para conter um mapeamento para uma chave k, se e somente se m.containsKey (k) retornaria verdadeiro.)
Outras dicas
Se a chave está presente table.put(key, val)
só vai substituir o valor mais ele vai criar uma nova entrada. Puf! e está feito. :)
Você pode obter o valor de um mapa usando a chave é table.get(key);
que é sobre ele
Você simplesmente usar o método
public Object put(Object key, Object value)
Se a chave já estava presente no Mapa, em seguida, o valor anterior é retornado.