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

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top