11
votes

Tri de Treemap basé sur la clé, où la clé est variable

Je veux trier la carte de l'arborescence en fonction de la clé où la clé est une variable, le tri doit donc être basé sur une valeur variable, comment pouvons-nous y parvenir? Je souhaite utiliser une méthode de tri construite Rathar la implémenter par le code, toute réponse avec l'exemple est d'une grande aide.


5 commentaires

Quelle serait cette clé? des exemples?


Merci pour la réponse, la clé est variable, k = 3, l = 2, m = 1 donc dans ce cas, je veux trier la clé m . et k mailed to x l est mappé sur y m m est mappé sur z


Voulez-vous dire que vous voulez trier par des valeurs plutôt que de trier par les clés?


@Dhruv considère ce cas. Je veux mettre en œuvre la clé comme variable. Comme A = 1, B = 3, C = 2, il doit être trié en fonction de ses valeurs. par exemple: lorsque vous mappez (A, "Un") (B, "TROIS") (C, "Deux"). Après avoir tri, la déclaration d'impression doit imprimer une, deux, trois et non une, trois, deux


@sachin Vérifiez ma réponse mise à jour.


3 Réponses :


0
votes

1 commentaires

Merci pour la réponse, la clé est variable, k = 3, l = 2, m = 1 donc dans ce cas, je veux trier la clé m . et k mailed to x l est mappé sur y m m est mappé sur z



2
votes

a Treemap est un rouge Arbre noir, qui est un arbre de recherche binaire . En d'autres termes, l'arbre est déjà trié (ou plutôt disposé selon les règles d'arborescence de recherche binaires) avec sa hauteur équilibrée de sorte que les opérations d'arbres ont une complexité O (LG N). Cependant, je pense que ce que vous voulez, c'est d'imprimer toutes les clés dans la commande triée. Ceci est aussi simple que la mise en œuvre d'une traversée d'inondation sur le Treemap, ou vous pouvez utiliser la méthode Keyset () pour obtenir un ensemble et itérer sur les valeurs.

E.g. de Traversal InOrdone P>

[hundred, one, three, two]


4 commentaires

Merci pour la réponse, la clé est variable, k = 3, l = 2, m = 1 donc dans ce cas, je veux trier la clé m . et k mailed to x l est mappé sur y m m est mappé sur z


Fondamentalement, la clé devrait être variable, le tri doit être une valeur w.r.t en variable non sur la valeur mappée sur la touche, il y a une différence dans ces deux.


@sachin Si la clé est une variable, alors ce qui va arriver à sa valeur associée lorsque la clé change?


Je ne pense pas que je puisse implémenter ce que je suis à la fois imputable, il devrait être unique, je dois donc rechercher l'autre slution. Mon besoin était que je souhaite trier la priorité d'un programme et que chaque schéma est associé à un drapeau exclusif mutuel de sorte que lorsque je trie le drapeau exclusif mutuel de la priorité respective doit être dans le même index de la matrice. Pouvez-vous me signaler une solution ??



23
votes

5 commentaires

@ PMNT Merci pour la rejou, je souhaite mettre en œuvre la clé comme variable. Comme A = 1, B = 3, C = 2, il doit être trié en fonction de ses valeurs. par exemple: (a, "un") (B, "trois") (c, "deux"). Si vous triez-le selon votre déclaration d'impression, il devrait imprimer un, deux, trois et non un, trois, deux


@sachin: sry, mais la classe de clés devrait être immuable (incapable d'être modifiée après la création) .Ce a 2 raisons: 1) Si vous modifiez la valeur d'une clé, elle ne peut pas être garantie que La clé est unique après le changement. 2) Les valeurs de la carte sont triées dans le bon ordre lorsque vous ajoutez la valeur. Donc, lorsque vous souhaitez modifier l'ordre des valeurs sur la carte, vous devez le recréer.


@pmnt en fait, que veut Sachin, c'est trier par des valeurs. Il s'est exprimé à tort.


Je vais expliquer le cas clairement, considérez ce «int A = 1; int b = 3; int c = 2; Mettez ceux-ci variables en tant que clé dans une carte mise (A, X), placez (b, y), placez (C, Z) lorsque vous triez la carte et l'impression de la sortie de la sortie doit être modifiée par Z jackowed par Y.


Sry, je n'ai pas votre problème. Rien ne vous empêche d'ajouter des valeurs via map.pan (a, x) . Il est seulement important de comprendre que le changement A après l'insertion dans la carte ne changera pas l'ordre de tri sur la carte. Et il n'y a rien que vous puissiez faire à ce sujet - à l'exception de la remappage de vos nouvelles paires de clés / valeur.