Comment Imprimer treemap dans l'ordre inverse
Dans mon travail, nous avons lu à partir d'un fichier texte:
Être, ou ne pas être: telle est la question:
Si c'est de plus noble dans l'esprit de souffrir
puis compter le nombre de fois chacun a eu lieu. J'ai été en mesure d'imprimer cette carte non triés, puis j'ai été en mesure de faire un TreeMap et l'imprimer dans l'ordre naturel (ce qui est indiqué ci-dessous). Je ne sais pas comment faire pour imprimer dans l'ordre inverse. Je connais un moyen d'utiliser un comparateur, mais je suis un peu rouillé donc j'ai fait ce que je peux. Par ailleurs, je ne sais pas comment régler le comparateur à trier le Treemap dans l'ordre inverse.
Voici ma méthode pour imprimer des ménagères et, Naturellement, triés:
private static void sortPrintFrequencies(Map<String,Integer> vocabulary, PrintStream output {
Iterator iterator = vocabulary.keySet().iterator();
System.out.println("Unsorted");
while (iterator.hasNext()) {
String key = iterator.next().toString();
String value = vocabulary.get(key).toString();
String times = "times.";
String appears = "appears";
System.out.printf("%35s", key + " " + appears + " " + value + " "+ times);
System.out.println();
}
System.out.println("========================================");
System.out.println("SORTED NATURALLY BY KEY");
TreeMap newVocabulary = new TreeMap(vocabulary);
Iterator iterator2 = newVocabulary.keySet().iterator();
while (iterator2.hasNext()) {
String key = iterator2.next().toString();
String value = newVocabulary.get(key).toString();
String times = "times.";
String appears = "appears";
System.out.printf("%35s", key + " " + appears + " " + value + " "+ times);
System.out.println();
}
TreeMap revVocabulary = new TreeMap(new RevCmpKey());
System.out.println("========================================");
}
Voici mon comparateur:
import java.util.*;
public class RevCmpKey implements Comparator<String> {
public int compare(String e1, String e2) {
//compareTo in String classs
if(e1.compareTo(e2) <1)return -1;
if(e1.compareTo(e2) >1)return 1;
return 0;
}
}
non, en fait je m'attendais à quelqu'un de ne pas seulement m'aider avec mon comparateur, mais à utiliser pour trier les TreeMap. Merci!
Je pense que vous devriez vous montrer plus d'effort puis. Cela semble un peu trop "donnez-moi teh codez" en ce moment. Peut-être montrer ce que vous pensez que la comparaison devrait ressembler, outre le squelette que vous avez?
oups!! c'est mon vieux comparateur de code!! mauvais changement. Merci pour le tuyau 🙂
OriginalL'auteur IC2D | 2012-02-18
Vous devez vous connecter pour publier un commentaire.
Que sur la copie de votre Carte dans un nouveau naturellement inversée commandé?
OriginalL'auteur Olivier C
Réponse Courte:
Utilisation descendingKeySet ou descendingMap.
Réponse Longue:
Solution 1:
Comme Oliver correctement mentionné, vous pouvez copier la carte dans une nouvelle TreeMap pour atteindre votre objectif.
Cependant, lors de l'utilisation de
descendingKeySet
, vous n'aurez pas besoin de créer un nouveau TreeMap:Voici un exemple:
Solution 2:
Vous pouvez également créer une nouvelle Carte dans l'ordre inverse à l'aide de
descendingMap
ainsi queCollections.reverseOrder()
:Noter que
descendingMap
retourneNavigableMap
.OriginalL'auteur Navid Vafaei
Puisque la Chaîne est déjà comparable, l'inverse de Comparaison triviale:
L'autre problème, c'est que vous n'êtes pas en spécifiant les valeurs des Génériques; Lorsque vous construisez le TreeMap, vous devez utiliser
Ensuite, vous appelez simplement putAll et c'est assez
OriginalL'auteur Luis
Ici, vous pouvez également préparer une ReverseComparator et de l'utiliser pour toute la classe, utilisé dans l'ordre-Collection :
Comme d'habitude, nous comparons o1 à o2, mais pour l'inverse de comparer o1 o2 avec
OriginalL'auteur Devarsh