Carte à l'intérieur de la carte en java
Quel est le problème avec cette instanciation :
Map<String, String, HashMap<String,String>> map = new HashMap<String, String, HashMap<String,String>>();
(Vous pourriez envisager de déclarer avec
Map
au lieu de HashMap
: Map<String,Map<String,String>> map = new HashMap<String, String,Map<String,String>>();
. Vous pouvez aussi introduire un objet qui représente une clé composite de sorte que vous seulement besoin d'une carte.)OriginalL'auteur London | 2010-07-14
Vous devez vous connecter pour publier un commentaire.
Un
Map<K,V>
est un mappage de touches de typeK
à des valeurs de typeV
. Il y a seulement 2 paramètres de type de la carte.Vous avez tenté de définir une carte avec 3 paramètres de type; ce n'est pas possible, et n'a rien à voir avec le fait que vous êtes de mettre un
Map
à l'intérieur d'unMap
.Un
Map<K1,Map<K2,V2>>
fonctionne très bien.Un
Map<X,Y,Z>
ne pas.Il est possible que vous besoin de quelque chose comme
Map< Pair<L,R>, Map<K,V> >
. Java n'a pas de génériquePair<L,R>
type, mais voir les questions ci-dessous pour trouver des solutions.Questions connexes
Sur les paires/n-uplets:
Paire<L,R>
en Java?Paire<String, String>
stocké dansHashMap
pas de récupération de clé->valeur correctementSur imbriquée cartes:
mais je crois que le problème est que la table de hachage ne pas autoriser les doublons, où les doublons peuvent être un nom de nœud avec différentes valeurs ou attributs
pour être précis, aucun
Map
ne peut associer une clé à une valeur. La même valeur peut être mappé par plusieurs touches, c'est à dire qu'il est un plusieurs-à-un rapport, pas un-à-plusieurs, et pas un-à-un. Vous pouvez définir unMap<K,Set<V>>
pour émuler le mappage d'une clé à plusieurs valeurs (ou encore mieux, utilisez la Goyave est Multimap), mais je ne suis toujours pas sûr de ce que vous faites pour donner des conseils. Vous voulez poser une autre question à laquelle vous indiquez clairement ce que vous êtes en train de faire.en fait il y a un générique paire de mise en œuvre, même si elle n'est pas si populaire. Voir SimpleEntry (download.oracle.com/docs/cd/E17409_01/javase/6/docs/api/java/...). Ma vie a changé depuis que j'ai découvert ça 🙂
Jackson: je suis d'accord avec le ux d'arguments. En fait la classe je l'ai mentionné peut être utilisé comme générique de la paire, mais il a un plus spécifiques de la sémantique: la valeur-clé de la relation. Je suis d'accord, il ne devrait pas être utilisé, sauf si c'est la relation réelle.
OriginalL'auteur polygenelubricants
Cartes de seulement 2 paramètres de type, vous avez 3 (dans votre "extérieure" de la Carte).
OriginalL'auteur Mark Peters
Interface de carte (ainsi que la classe HashMap) s'attend à seulement 2 de type générique arguments: l'un pour le type de clé et un pour le type de valeur. Vous fournir 3...
OriginalL'auteur Eyal Schneider
Si vous le souhaitez, vous pouvez utiliser quelque chose de ce genre
Cet objet peut être un objet d'une Classe en tenant les deux Chaînes.
Espérons que cela résout votre problème.
Un objet de Xyz peut être utilisé comme clé dans la carte ci-dessus.
OriginalL'auteur subbu