Aggiornamento di una voce di java mappa
Domanda
Sono di fronte a un problema che sembra non avere soluzione straighforward.
sto usando java.util.Map
, e voglio aggiornare il valore in una coppia di valori-chiave.
In questo momento, lo sto facendo lik questo:
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;
}
}
}
Quindi non v'è alcun metodo in modo che io possa ottenere il Entry
oggetto desiderato, senza dover scorrere l'intero Map
? O c'è qualche modo per aggiornare il valore della voce nel posto? Alcuni metodo setValue(String key, int val)
come <=>?
JRH
Soluzione
Usa
table.put(key, val);
per aggiungere una nuova coppia chiave / valore o sovrascrivere un valore di chiave esistente.
Dal Javadocs:
V put (chiave K, V value): Associa il valore specificato con la chiave specificata in questa mappa (operazione facoltativa). Se la mappa in precedenza conteneva una mappatura per la chiave, il vecchio valore viene sostituito dal valore specificato. (Una mappa m si dice contenga una mappatura per una chiave k se e solo se m.containsKey (k) restituirebbe true.)
Altri suggerimenti
Se la chiave è presente table.put(key, val)
sarà solo sovrascrivere il valore altrimenti si creerà una nuova voce. Puf! e si è fatto. :)
è possibile ottenere il valore da una mappa utilizzando chiave è table.get(key);
Questo è tutto
Basta usare il metodo
public Object put(Object key, Object value)
se la chiave era già presente nella mappa, allora il valore precedente viene restituito.