Referencing a previous answer to a question on SO, esiste un metodo chiamato TestForNull. Questo era il mio codice originale prima che mi è stato detto che potrei renderlo più efficiente:Ricerca mappa Efficienza di TestForNull
mio codice originale:
for (int i = 0; i < temp.length; i++) {
if (map.containsKey(temp[i]))
map.put(temp[i], map.get(temp[i]) + 1);
else
map.put(temp[i], 1);
In questo frammento di codice, che sto facendo tre look-up per la mappa. Mi è stato detto che questo potrebbe essere realizzato in una sola occhiata, così ho finito per cercare una risposta su SO e trovato la risposta legata, e modificato il mio codice a guardare come:
mio codice modificato:
for (int i = 0; i < temp.length; i++) {
Integer value = map.get(temp[i]);
if (value != null)
map.put(temp[i], value + 1);
else
map.put(temp[i], 1);
}
Anche se sembra meglio, sembra due lookup per me e non per uno. Mi chiedevo se ci fosse un'implementazione di questa che ne utilizza solo una e se può essere fatta senza l'uso di librerie di terze parti. Se aiuta, sto usando una HashMap per il mio programma.
Hmm, forse intendevano solo "get()" era una ricerca? Non vedo alcun modo per accorciarlo ulteriormente. – markspace
Non c'è alcuna differenza tra i tuoi due codici, davvero; o meglio, non puoi dirlo. Forse '.containsKey()' _for questa implementazione 'Map' fa un recupero completo, forse no. Dopo ciò, è solo una questione di scelta. Ma personalmente andrei con la seconda soluzione, cioè il tuo codice modificato. – fge
@fge Anche se ho ridotto la quantità di look-up? Se aiuta la risposta, sto usando una HashMap. – Dumpcats