Vérifier l'existence d'une clé HashMap
En Java, ayant une HashMap entièrement rempli avec les données du formulaire:
HashMap<Integer, int[]> map = new HashMap<Integer, int[]>(1000000, 1);
ce qui est plus rapide lors de la vérification de l'existence d'une clé aléatoire, par exemple 100:
if (map.get(100) == null))
ou
if (!map.containsKey(100))
?
Question est intéressante à partir de la micro-optimisation de point de vue.
source d'informationauteur Sophie Sperner
Vous devez vous connecter pour publier un commentaire.
La
containsKey
devrait être très légèrement plus lent, car il en résulte un supplément d'appel de fonction (il s'appelle justegetEntry
) (elle pourrait optimisé loin, je ne suis pas sûr de savoir si Java va le faire).containsKey
ressemble:Mais notez que
containsKey
pourrait en revanche être très légèrement plus rapide sur d'autresMap
implémentations (mais probablement pas ceux de la norme API Java).En général, mes implémentations de ressembler à: (en évitant la nécessité de
containsKey
)Ci-dessous serait certainement être plus lent que le ci-dessus: si les articles que vous recherchez existe une quantité raisonnable de temps)
Edit: Grâce à zvzdhk pour fournir la source de
containsKey
. Je devrais avoir vérifié.En fait, les deux approches sont les mêmes. Si vous regardez dans
java.util.HashMap
code source, vous pouvez trouver la prochaine containsKey réalisation:Les deux ne diffère en
return
type, à l'exception quemap.get(key)
peut vous revenirnull
dans le cas où si sa clé, cependantmap.containsKey(key)
sera de retour que vousboolean
qui pourrait être utilisé pour distingush les deux cas possibles demap.get(key)
retournull
.Il n'y a pas de différence entre ces deux approches. La principale différence de ce que vous allez faire ensuite. Si vous avez besoin de la valeur puis, bien sûr, par obtenir, vous aurez la valeur.