Mon objectif est de créer une carte des cartes afin que je puisse récupérer des informations de la carte extérieure par sa clé, puis d'accéder à ses cartes "intérieures" par leurs clés.
Cependant, lorsque j'ai reçu chaque carte intérieure, la carte que j'ai créée est devenue un objet et je ne peux pas utiliser la clé pour accéder à sa valeur, car je le fais avec la carte extérieure. P>
Pour apprendre de vos experts, J'aimerais savoir comment garder toutes les cartes en tant que cartes. Ou, est-ce possible du tout? P>
Voici mon programme d'exercices: P>
Map<Object,Map<Object,String> Map<String, Object> mpMaps=new HashMap<String, Object>();
6 Réponses :
Votre code ne compile pas.
Un problème est celui-ci: p> Cela ne fonctionnera pas, car vous mettez une carte ( Utilisez MP code>) dans une carte dont les valeurs doivent être
Strings CODE>. P>
Carte
En redéfinissant la carte, devrais-je obtenir une carte par carte m = mpmaps.get (clé)? J'ai essayé, mais je ne peux toujours pas le faire travailler .....
Oui tu devrais. Si cela ne fonctionne pas, modifiez votre question pour ajouter le nouveau code et expliquer exactement ce qui ne fonctionne pas.
Excellent! Je l'ai travaillé! Maintenant, comprenez vraiment à quel point Java est grave! Quelques fois, j'ai eu du code travaillant à Groovy, mais quand j'ai essayé sur Java, il a échoué. Il a échoué parce que je n'ai pas donné assez de détail des types! MERCI!
Map<Object,String> mpMaps=new HashMap(); mpMaps.put("Map1",mp); you'll get an exception with this statement: mp has type Map but you're treating it as a String. If I understood your question right, you'll either need a reference to the object used as key or you'll need to type cast your key/values.
Voici le code mis à jour qui semble fonctionner, vous devez saisir la carte des cartes comme
code>.
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.ArrayList;
public class MapExample {
public static void main(String[] args) {
Map<Object,String> mp=new HashMap<Object, String>();
// adding or set elements in Map by put method key and value pair
mp.put(new Integer(2), "Two");
mp.put(new Integer(1), "One");
mp.put(new Integer(3), "Three");
mp.put(new Integer(4), "Four");
Map<Object,String> mp2=new HashMap<Object, String>();
mp2.put(new Integer(2), "Two2");
mp2.put(new Integer(1), "One2");
mp2.put(new Integer(3), "Three2");
mp2.put(new Integer(4), "Four2");
Map<String, Object> mpMaps=new HashMap<String, Object>();
mpMaps.put("Map1",mp);
mpMaps.put("Map2",mp2);
System.out.println("This is a map of Maps: " + mpMaps);
for (int i=0;i<mpMaps.size();i++){
ArrayList<Object> a = new ArrayList<Object>(mpMaps.keySet());
Object o=a.get(i);
System.out.println("all together: " + mpMaps.size() + "each element is: " + o + " value: " + mpMaps.get(o));
}
}
}
Une solution alternative serait d'utiliser les commons multikey pour éviter la carte des cartes. Voir les détails sur http://commons.apache.org/collections/apidocs/ et org. Apache.cons.Collections.KeyValue.Multikey P>
Voici un exemple simple utilisant sortie: p> hashmap code>
Pensez à cette autre solution possible à votre usage est d'avoir un seul hashmap qui a des paires de clés de valeurs. Cela réduirait la complexité de la chose entière (aussi parce que la syntaxe des génériques est vraiment une douleur).
Oui, c'est bien! Merci! Mon besoin provient d'un projet que je dois d'abord trier une liste de cartes, puis récupérer les valeurs de chaque carte pour une utilisation ultérieure.