MultiMap vs à valeurs multiples de la Carte
À un endroit que je dois utiliser une carte avec beaucoup de valeurs mappé à une seule touche, alors je me demandais s'il existe une performance significative distinction entre l'utilisation de table de hachage de la clé, liste et MultiMap de clés , valeurs en java.
OriginalL'auteur r15habh | 2011-04-29
Vous devez vous connecter pour publier un commentaire.
Vous pouvez l'essayer, mais je doute qu'il y est beaucoup de différence, car il fait bien la même chose.
À mon humble avis, L'avantage est plus simple/le code plus clair, qui est généralement plus important que les performances.
OriginalL'auteur Peter Lawrey
Je vous recommande d'utiliser google collections, si vous souhaitez utiliser plus pratique pour la mise en œuvre d'une Multimap. Dans le cas où vous ne souhaitez pas introduire une nouvelle dépendance,
HashMap<Key, Collection<Value>>
devrait faire l'affaire, qui est à peu près ce que apache.collections HashMultiMap.OriginalL'auteur Sebastian Zarnekow
Si c'est une Carte-Clé-> les Valeurs, l'utilisation d'une Carte de mise en œuvre.
Comme vous l'aurez certaines Valeurs avec les mêmes Touches, utilisez le http://guava-libraries.googlecode.com/svn/tags/release09/javadoc/com/google/common/collect/HashMultiset.html de Google Collecte (maintenant goyave bibliothèque, http://code.google.com/p/guava-libraries/ ) pour votre tâche.
OriginalL'auteur Pih
De hachage fournit O(1), qui est rapide et ne fait rien avec la taille des éléments.
Quant à Multimap, vous pourriez mettre des valeurs dans dépendante de la collection (Liste Réglage). Collection différente implémentations fournit des performances différentes.
EDIT: Comme je l'ai commenté sur Sebastian de la réponse. Vous pouvez utiliser la Goyave qui fournit une valeur différente de collecte implemantions:
HashMultiMap (HashMap<KEY, HashSet<VALUE>>)
,ArrayListMultiMap (HashMap<KEY, ArrayList<VALUE>>)
...hmm...big O ne pas indiquer le pire des cas.
Ok, j'ai considéré l'O() notation la notation Grand O, qu'il est généralement utilisé pour le pire des cas. De toute façon, les tables de hashage fournit amortis O(1) d'accès.
OriginalL'auteur 卢声远 Shengyuan Lu