Je suis actuellement en train de mettre en œuvre un Treemap pour stocker des paires de la valeur de clé, où la clé est une chaîne ordinaire et la valeur est une pile d'objets. De ce que je comprends (c'est ma première fois en utilisant une carte, donc je suis très vert), la classe TreeMap utilise l'ordre naturel des clés pour trier lui-même, mais je voudrais que cela soit trié de manière lexicographique. Encore une fois de ce que je comprends, sa méthode de comparaison peut être écrasée pour y accomplir. J'ai déjà une idée de la façon dont je vais le faire lexicographique, ma question réside dans le fait que je ne sais pas comment remplacer réellement la méthode. Dois-je mettre la partie remplie dans la classe que j'utilise le Treemap? Dois-je faire une classe distincte appelée carte d'arborescence et écrire la nouvelle méthode là-bas? Quelle est la syntaxe spéciale (le cas échéant) pour remplacer une méthode de comparaison? Je suis désolé si cette question semble basique, mais je suis très nouveau à cela et je suis en train de regarder en ligne, j'ai eu du mal à trouver une explication que je comprends bien. Merci d'avance pour votre aide et votre patience! P>
3 Réponses :
Essayez ceci comme exemple:
Ok, alors l'idée serait de définir le nouveau comparateur dans une classe à part entière, puis lorsque j'appelle la carte d'arborescence réelle, j'appellerais sur cette classe entre les crochets? Aussi, très rapidement, quelque chose que j'ai remarqué tout en comparant votre code à mien, c'est que vous initialisiez le TREEMAP à l'aide de "SORTEDMAP
@ABDCG TREEMAP
SortedMap code> est une interface que
Treemap code> implémente.
Treemap code> Constructeur spécifique qui accepte un comparateur
personnalisé code> objet. Vous pouvez mettre votre logique à l'intérieur du comparateur transmis. P>
En réalité, vous pouvez transmettre une instance de comparaison à l'un des constructeurs de Treemap. Utilisation de Lambda Expression, vous pouvez même le simplifier à:
TreeMap<String, String> t = new TreeMap<>(String::compareTo);