Quelle est la différence entre HashMap et HashMultimap
Je vois de nombreux exemples sur multimap mais ne comprend pas pourquoi Google Gauva est-il différent?
Multimap<Integer, Set<String>> option4 = HashMultimap.create(); //Gauva
Map<Integer, Set<String>> opt = new HashMap<Integer, Set<String>>(); //Core Java
Est à la fois ci-dessus sont se comportent de même pour la tenue de données ou de différent?
source d'informationauteur Faisal Basra
Vous devez vous connecter pour publier un commentaire.
Un
MultiMap<A, B>
associe une clé de type A avec une valeur de typeCollection<B>
(d'où le nom de MultiMap)Un
Map<A, B>
associe une clé de type A avec une valeur de type B.Donc, un
MultiMap<Integer, Set<String>>
peut être considérée comme uneMap<Integer, Collection<Set<String>>
. Cela devrait être évident, par la lecture de la documentation de l'api.La différence est qu'avec la seconde, de Base mise en œuvre Java, vous devez vérifier si le Jeu est-il avant de l'insérer. La goyave est Multimap prend soin de cela pour vous.
Avec Le Noyau De Java:
Avec La Goyave:
Goyave se charge de l'initialisation d'une autrement absente Set pour enregistrer les valeurs, prend soin de tous les problèmes de threading (par exemple, s'arrête à deux fils de la création d'un nouvel Ensemble pour la même clé, en parallèle) et fournit également quelques méthodes utiles que vous auriez autrement nécessité de mettre en œuvre à la main, tels que l'obtention de toutes les valeurs dans tous les
Set
s.Nope,
MultiMap
signifie qu'il y aurait une collection d'objets attachés à chaque touche.Documentation: Multimap_Is_Not_A_Map
Vous avez mal compris quelque chose. Ce ne sont pas de même à peu près équivalent:
Dans votre exemple,
opt4
serait carte à un seulInteger
à une Collection d'Ensembles de Chaînes de caractères.C'est exactement le point de l'utilisation d'un
Multimap
, vous n'avez pas explicitement à répondre à la deuxième dimension. Donc, en fait, le bon (équivalent) déclaration serait:et vous pouvez obtenir une carte afficher comme ceci:
Première de toutes les com.google.commun.collecter.Multimap n'est pas java.util.Carte, c'est dans une hiérarchie distincte.
Deuxièmement, vous pouvez toutes les opérations avec
Map<Integer, Set<String>>
que Multimap interface nécessite, mais vous aurez à mettre en œuvre vous-même tout en HashMultimap offre de prêt, de mise en œuvre.