集合:通过从文件中读取来打印前五次出现

Collection: Printing the top five occurrences by reading from a file

我正在尝试读取一个大文件。文件每行包含 lastName, firstName
如何打印前 5 次出现的 lastName 和前 5 次出现的 firstName?

到现在我才想到用TreeMap。但它按键而不是值排序。解决这个问题的最佳集合是什么?

您需要多个合集。前两个集合记录了名字和姓氏的计数。一旦你有了这些,你就可以创建一个结构,你可以在其中按计数排序并将其与名称相关联。

  • 创建一个 Map<String, Integer> 包含 lastNames 键,以及它们对应的频率作为值。对名字做同样的事情。
  • 在读取文件时填充地图
  • 创建一个 List<Map.Entry<String, Integer>> 包含地图的所有条目(每个地图一个列表)
  • 使用自定义比较器按降序比较条目的值(即按频率)对这些列表进行排序
  • 选择列表的前 5 个元素并提取它们的名称