对java ArrayList中最频繁的n个单词进行排序
我需要在ArrayList中找到最频繁的单词(n个单词,因此如果n=5,则为最频繁的5个单词)
private ArrayList<String> wordList = new ArrayList<String>();
public ArrayList<String> mostOften(int k)
{
ArrayList<String> lista = new ArrayList<String>();
Set<String> unique = new HashSet<String>(wordList);
for (String key : unique)
System.out.println(key + ": " + Collections.frequency(wordList, key));
return lista;
}
该函数需要返回最频繁的单词列表,按频率排序。如果两个单词的频率相同,我需要按字母顺序对它们进行排序。我已经发布了我尝试的内容,但这只找到了频率,我不知道如何做其余的。有什么帮助吗
# 1 楼答案
# 2 楼答案
# 3 楼答案
您可以编写一个比较器类,该类用列表初始化。然后你可以调用集合。使用列表和比较器排序()。 代码可能如下所示:
# 4 楼答案
下面是一个使用Java 8和流的解决方案,包括计算词频、排序和限制
k
个单词: