Вы можете объявить ваш метод entriesSortedByValues
как неуниверсальный (который скрыл бы класс Topic
, как указано в первом комментарии вашего вопроса):
static SortedSet<Map.Entry<String, Topic>> entriesSortedByValues(Map<String, Topic> map) {
SortedSet<Map.Entry<String, Topic>> sortedEntries = new TreeSet<Map.Entry<String, Topic>>(
new Comparator<Map.Entry<String, Topic>>() {
@Override
public int compare(Map.Entry<String, Topic> e1, Map.Entry<String, Topic> e2) {
int res = e1.getValue().compareTo(e2.getValue());
return res != 0 ? res : 1;
}
}
);
sortedEntries.addAll(map.entrySet());
return sortedEntries;
}
, а затем сделать ваш Topic
класс реализации Comparable
:
public class Topic implements Comparable<Topic> {
private final int id;
private final String topic;
private final int score;
public Topic(int id, String topic, int score) {
this.id = id;
this.topic = topic;
this.score = score;
}
public int getScore() {
return score;
}
@Override
public int compareTo(Topic o) {
return Integer.compare(getScore(), o.getScore());
}
}