В моем назначении мы читаем из файла текст:
Быть или не быть: вот в чем вопрос:
Будь благороднее в уме страдать
затем посчитайте, сколько раз каждый произошел. Я смог распечатать эту карту без сортировки, затем я смог создать TreeMap и распечатать его в естественном порядке (как показано ниже). Я не знаю, как печатать в обратном порядке. Я знаю способ использования компаратора, но я немного заржавел, поэтому я сделал все, что мог. Кроме того, я не знаю, как настроить компаратор для сортировки карты дерева в обратном порядке.
Вот мой метод печати несортированных и естественно отсортированных:
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("========================================");
}
Вот мой компаратор:
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;
}
}