集合:通过从文件中读取来打印前五次出现
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 个元素并提取它们的名称
我正在尝试读取一个大文件。文件每行包含 lastName, firstName
。
如何打印前 5 次出现的 lastName 和前 5 次出现的 firstName?
到现在我才想到用TreeMap。但它按键而不是值排序。解决这个问题的最佳集合是什么?
您需要多个合集。前两个集合记录了名字和姓氏的计数。一旦你有了这些,你就可以创建一个结构,你可以在其中按计数排序并将其与名称相关联。
- 创建一个
Map<String, Integer>
包含 lastNames 键,以及它们对应的频率作为值。对名字做同样的事情。 - 在读取文件时填充地图
- 创建一个
List<Map.Entry<String, Integer>>
包含地图的所有条目(每个地图一个列表) - 使用自定义比较器按降序比较条目的值(即按频率)对这些列表进行排序
- 选择列表的前 5 个元素并提取它们的名称