我需要制作一个从stdin读取多行的程序来计算单词,然后打印出现次数的单词,但是如果两个或多个单词具有相同的数字,我必须按字母顺序对其进行排序。
例如:
hello world
good morning
hello
输出应为:
hello: 2
good: 1
morning: 1
world: 1
我想知道哪种方法是最好的,哈希图是最好的方法吗?
最佳答案
这实际上是一个比表面上看起来更有趣的问题。
基本上HashMap<String, Integer>
是一个不错的选择,建立一个包含所有单词的Map。
然后,您要从该地图中取出entrySet()
并将entrySet()
从地图中拖放到新的ArrayList<Entry<String, Integer>>
中。然后,您可以使用Collections.sort
通过自定义比较器对ArrayList
进行排序,该比较器首先按值排序,然后按键排序。
我不会为您提供代码,但是如果您对这些步骤中的任何一个有任何疑问,请随时提出。