0
votes

Comment insérer des éléments triple sur une carte en Java?

Donc, l'idée principale est de créer par exemple: xxx

et j'ai besoin de mettre sur cette carte par exemple les éléments: xxx p> Comment faire ça? Comment mettre en œuvre la fonction "Met"? map.put ("France", "Paris", 2) ne fonctionne pas.


5 commentaires

Le premier argument à mettre devrait être un mapper 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 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 comme clé ici Vous avez trouvé des détails explications pourquoi nous ne devrions pas Stackoverflow.com/Questtions/25782057/...


3 Réponses :


6
votes

Vous devez d'abord créer une carte (code> (par exemple, map.of ("France", "Paris") ) et mettez-le à l'intérieur de la carte plus gros < /code >.

en ce qui suit: xxx

sortie: xxx

alternativement, xxx

ATTENTION: Comme déjà mentionné par Murinik , avoir des objets mutables en tant que touches (la solution alternative) sur une carte est une erreur -enclin. Vous pouvez vérifier Cette réponse pour une explication.


6 commentaires

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: 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.



2
votes

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;
    
}


3 commentaires

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 "? Vous moulez ceci , qui est un instance de capital à coup sûr, à objet , juste pour effectuer un instance de capital Vérifiez que cela ne peut jamais échouer. Le code complet après capital final autre = (capital) o; peut être réduit à un simple retour d'objets de retour.equals (this.country, d'autres.unstry) && objets.equals (ce nom , autre.name); . De même, la méthode HashCode peut être implémentée comme simple que renvoyer des objets.hashscode (this.country, ce nom);


Vrai, merci, j'ai mis à jour la réponse pour souligner que cette solution ne devrait pas être écrit à la main , mais générée .


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 , 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) {} en Java et nous avons terminé, sans avoir besoin d'outils tiers.



2
votes

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 code>

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")));


0 commentaires