Donc, l'idée principale est de créer par exemple: et j'ai besoin de mettre sur cette carte par exemple les éléments: p> map.put ("France", "Paris", 2) code> ne fonctionne pas. p> p>
3 Réponses :
Vous devez d'abord créer une carte code> (code> (par exemple, en ce qui suit: p> alternativement, strong> p> map.of ("France", "Paris") CODE>) et mettez-le à l'intérieur de la carte
plus gros < /code >.
Notez de la petite lettre que la première solution nécessite JDK 9 ou plus. L'alternative ne le fait pas.
@Aboger - Merci pour la note. OP: B> Veuillez noter que seule la première solution nécessite la version minimale en tant que Java-9. Le second fonctionnera avec toutes les versions.
Pour vous deuxième solution obtenir de la carte ne fonctionnera pas correctement, je pense
@Arvindkumaravinash Désolé je ne peux pas vous donner un exemple, mais vous pouvez lire ici quel problème se produira et pourquoi nous ne devrions pas utiliser de carte mutable comme clé Stackoverflow.com/questions/25782057/...
@Riwimoherbs - Merci d'avoir partagé ce lien. Je l'ai ajouté à ma réponse afin que la réponse puisse être plus utile pour les futurs visiteurs.
@Vladgric - J'espère que la solution a fonctionné pour vous. N'oubliez pas de marquer la réponse comme acceptée afin que les futurs visiteurs puissent également utiliser la solution en toute confiance. Afin de marquer la réponse comme acceptée, vous devez cliquer sur la grosse coche (✓) à gauche du Réponse . Vous pouvez également vérifier meta.stackexchange.com/a/5235/676168 pour en savoir plus à ce sujet. N'hésitez pas à commenter en cas de doute / problème.
Bien que la réponse d'Arvind Kumar Avinash résout parfaitement la question, veuillez noter que vous devez reconsidérer votre structure de données.
avoir une carte code> comme une touche pour une autre carte code> est pas conseillé. Vous devriez plutôt créer une autre classe qui permet d'être une clé d'une carte code>. Si vous souhaitez avoir des capitales comme des clés, envisagez de mettre en œuvre une classe immuable telle que celle-ci, dans laquelle
est égal () code> et
hashcode () code> sont correctement remplacés: p >
@ToString
@EqualsAndHashCode
@RequiredArgsConstructor
public class Capital {
private final String country;
private final String name;
}
Si vous souhaitez vous débarrasser du code de la chaudron, n'écrivez pas un tel code de chaudière. Où est le sens dans cette méthode " Canequal code>"? Vous moulez
ceci code>, qui est un
instance de capital code> à coup sûr, à
objet code>, juste pour effectuer un
instance de capital code > Vérifiez que cela ne peut jamais échouer. Le code complet après
capital final autre = (capital) o; code> peut être réduit à un simple
retour d'objets de retour.equals (this.country, d'autres.unstry) && objets.equals (ce nom , autre.name); code>. De même, la méthode code> HashCode CODE> peut être implémentée comme simple que
renvoyer des objets.hashscode (this.country, ce nom); code>
Vrai, merci, j'ai mis à jour la réponse pour souligner que cette solution ne devrait pas être écrit à la main i>, mais générée i>.
Oui, nous devrions éviter de faire des choses qu'une machine peut faire pour nous, mais à la fin, ce que la machine a été prédéterminée par des humains et nous devons donc parfois savoir que le code généré n'est pas meilleur que l'humain écrit (et je cas rencontrés où il a eu des défauts significatifs). Il serait intéressant de constater pourquoi les auteurs de Lombok ont ajouté que méthode CANEGALE CODE>, mais à la fin, peu importe. Dans le futur proche, nous pouvons simplement écrire
Capital d'enregistrement public (pays de chaîne, nom de chaîne) {} code> en Java et nous avons terminé, sans avoir besoin d'outils tiers.
Lorsque vous utilisez une paire de chaîne en tant que clé, vous pouvez utiliser map.Entry code> comme clé de la carte plutôt utiliser
mappe
Map<Map.Entry<String, String>, Integer> map = new LinkedHashMap<>();
map.put(Map.entry("France", "Paris"), 12);
map.put(Map.entry("Spain", "Madrid"), 2);
System.out.println(map.get(Map.entry("France", "Paris")));
Le premier argument à
mettre code> devrait être un
mapper code> dans ce cas, pas une chaîne.
Avoir un objet mutable comme une clé de votre carte est une recette de problème ... qu'est-ce que vous essayez exactement d'atteindre ici?
Êtes-vous sûr i> que ce que vous voulez est une carte d'une carte à un entier? Il existe de meilleurs moyens d'avoir des clés ou des valeurs multi-pièces. Que représente votre carte et comment allez-vous l'utiliser?
Qu'est-ce que vous essayez de faire du système et des données sage? Cause Cette question ressemble à une configuration nécessitant une conception différente considérée.
Vous ne devez pas utiliser
mappe code> comme clé ici Vous avez trouvé des détails explications pourquoi nous ne devrions pas Stackoverflow.com/Questtions/25782057/...