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. p>
3 Réponses :
La carte est triée en fonction de l'ordre naturel de ses clés, ou par
Treemap code> a> implémente le
triedmap code> < / a> interface et est trié par sa clé sans avoir à faire quoi que ce soit: p>
comparateur code>
fourni au temps de création de la carte, selon lesquels
constructeur est utilisé. p>
blockQuote>
Merci pour la réponse, la clé est variable, k = 3, l = 2, m = 1 code> donc dans ce cas, je veux trier la clé
m
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]
Merci pour la réponse, la clé est variable, k = 3, l = 2, m = 1 code> donc dans ce cas, je veux trier la clé
m
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 ??
comme type clé (dans ce cas EDIT: D'accord, voici une suggestion comment repasser votre carte. P> Treemap code> A> (qui implémente
(ou Vous pouvez fournir un triedmap code>
) stocke automatiquement les touches dans le bon ordre: integer code>) Vous pouvez utiliser n'importe quelle classe qui implémente
comparable code>
comparateur code> Lors de la création du
Treemap code>) p>
Map<Integer, String> oldMap; // get oldMap from somewhere
// Prepare remapping
Map<Integer, String> newMap = new TreeMap<Integer, String>();
Map<Integer, Integer> keyMap = new HashMap<Integer, Integer>();
// Store a new key for each old key
keyMap.put(oldKey, newKey);
// fill the newMap
for(Integer oldKey : keyMap.keySet()) {
newMap.put(keyMap.get(oldKey), oldMap.get(oldKey));
}
oldMap = newMap; // if needed
@ 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) code>. Il est seulement important de comprendre que le changement
A code> 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.
Quelle serait cette clé? des exemples?
Merci pour la réponse, la clé est variable,
k = 3, l = 2, m = 1 code> 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.