Я пытался хранить частоты строки в TreeMap, чтобы я мог получать наиболее часто используемые строки, скажем, определенного пользователя. Теперь я хочу написать метод, чтобы вернуть мне первые n элементов (наиболее часто используемых) из отсортированной карты.Получить первые n элементов из sortedmap
public TreeMap<String,Integer> getKeywords(int n){
//Can check if sorted for efficiency!
println keywords.size();
keywords=keywords.sort{a,b->
//sort the map desc by value
b.value <=> a.value;
}
TreeMap<String,Integer> result=new TreeMap<>();
//need to fill result with first n elements from keywords
return result;
}
Я попробовал несколько способов, как с помощью .each()
по ключевым словам или перебирать его Keyset, но никто не сохраняет свой первоначальный заказ, и я в конечном итоге получить результат несортированный. Помощь & Подсказки приветствуются!
Резкий. Проблема в том, что когда я назначаю ключевые слова = keywords.sort {...}, ключевые слова снова сортируются по ключу из-за природы TreeMap! После того, как я сменил его на LinkedHashMap, все пошло по плану! – OrlandoL