0
votes

Comment remplacer le comparateur pour Treemap

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!


0 commentaires

3 Réponses :


2
votes

Essayez ceci comme exemple: xxx


2 commentaires

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 MAP = NOUVEAU TREEMAP <> (nouveau SORSASCINGCOMPARATOR ())", tandis que avec mon code j'ai écrit "Treeemap > map = nouveau Treemap <> () ". L'initialisation du Treemap avec SIEDMAP fait-elle une différence?


@ABDCG TREEMAP MAP = NOUVEAU TREEMAP <> (NOUVEAU SORSASTASCINGCOMPARATOR ()); est également OK. SortedMap est une interface que Treemap implémente.



1
votes

Treemap Constructeur spécifique qui accepte un comparateur personnalisé objet. Vous pouvez mettre votre logique à l'intérieur du comparateur transmis.


0 commentaires

1
votes

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


0 commentaires