我收到了一个大文本作为输入。我制作了一个 HashMap,将每个不同的单词存储为键,并将出现的次数存储为值(整数)。
现在我必须创建一个名为 mostOften(int k):List 的方法,该方法返回一个列表,该列表给出从最大出现次数到最小出现次数的前 k 个单词(降序排列) )使用我之前制作的HashMap。 问题是,只要两个单词出现次数相同,就应该按字母顺序对它们进行排序。
我想到的第一个想法是交换给定 HashMap 的键和值,并将其放入 TreeMap 中,TreeMap 将按键对单词进行排序(整数 - 单词出现的次数),然后弹出TreeMap 中的最后/第一个 K 条目。
但是当2个或3个单词的数量相同时,我肯定会发生冲突。我将按字母顺序比较单词,但我应该输入什么整数作为第二个单词的键。
有什么想法如何实现这个或其他选项吗?
最佳答案
提示:
查看 javadoc 中的
Collections.sort
方法...这两个方法!查看
Map.entries()
的 javadoc。考虑如何实现一个
Comparator
,用于将类的实例与两个字段进行比较,当另一个字段比较相等时,使用第二个字段作为“决胜局”。
关于java - 如何获取给定文本中 N 个最常用的单词,从最大到最小排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20453629/