Bonjour,
Je cherche a faire un graphe et donc j'aimerais savoir si il existe un équivalent des multimap C++ en java.
Si oui, quelle classe le permet ?
Merci d'avance
Bonjour,
Je cherche a faire un graphe et donc j'aimerais savoir si il existe un équivalent des multimap C++ en java.
Si oui, quelle classe le permet ?
Merci d'avance
Tu as essayé avec une IdentityHashMap ?
Elle compare les clés avec l'opérateur == et non avec la méthode equals()
Comme dans les tests, on ne fait généralement pas "a" == "a" mais "a".equals("a"), cela doit signifier que les 2 Strings "a" doivent avoir une adresse mémoire différente (je n'ai pas tester)
Cela doit donc fonctionner avec une IdentityHashMap si des clés sont des instances différentes.
Sinon, tu utilises une HashMap classique mais comme valeur, tu met une ArrayList de valeurs.
Ca ne marches pas, les clés doivent être unique et non null.
Pour le moment je me suis tourné vers une librairie externe : jakarta commons collections de Apache ou je retrouve les MultiMap mais je suis obligé de l'importer dans le projet étant donnée qur ca ne fait pas partie des librairies standard.
On peut bien mettre deux clés nommés "a" si on fait un new String() !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 import java.util.IdentityHashMap; public class Test { public static void main(String[] args) { IdentityHashMap<String, String> map = new IdentityHashMap<String, String>(); map.put(new String("a"), "v1"); map.put(new String("a"), "v2"); System.out.print("a" == "a"); // true System.out.print(new String("a") == new String("a")); // false } }
Par contre, pas moyen de récupérer les 2 valeurs avec un map.get("a"), ni une seule du moment où on n'a pas gardé la référence sur la String.
![]()
Du coup, ça ne fait pas ce que tu veux !!!
Je pense qu'en revanche ma deuxième proposition fonctionne (avec les listes pour valeurs et la clé "null" pour les éléments null) Bien entendu, il faut écrire un peu de code et si les collections Apache le font, autant t'en servir.![]()
Je vais essayer les collections apache, c'est tout le temps bin réalisé![]()
Partager