集合:通过读取文件打印前五个事件

时间:2015-05-20 17:50:34

标签: java collections

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

直到现在我已经考虑过使用TreeMap了。但它按键而不是值排序。解决这个问题的最佳集合是什么?

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

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