有一个方法:
public void ShowRacingResults(String folderPath) {
Map<String, String> abbreviationsMap = ConvertFileToMap(folderPath + "/abbreviations.txt");
Map<String, String> resultMap = CalculateResults(folderPath);
int place = 1;
for (String s : resultMap.keySet())
for (String k : abbreviationsMap.keySet())
if (s.equals(k)) {
System.out.println(place + ". " + abbreviationsMap.get(k).split("_")[0] + " | "
+ abbreviationsMap.get(k).split("_")[1] + " | " + resultMap.get(s));
place++;
} else if (s.equals(k) & place == 16) {
System.out.println("------------------------------------------------------------------------"
+ "\n" + place + ". " + abbreviationsMap.get(k).split("_")[1] + " | "
+ abbreviationsMap.get(k).split("_")[2] + " | " + resultMap.get(s));
place++;
}
}
最终将结果输出为:
- 瓦尔特利·博塔斯 | 梅赛德斯| 1:12.434
- 塞巴斯蒂安·维特尔 | 法拉利 | 1:04.415
- 卡洛斯·塞恩斯 | 雷诺 | 1:12.950
- 丹尼尔·里卡多 | 红牛赛车 TAG HEUER | 1:12.013
- 凯文马格努森 | 哈斯法拉利 | 1:13.393
- 塞尔吉奥佩雷斯 | FORCE INDIA MERCEDES | 1:12.848
- 斯托菲尔·范多恩 | 迈凯轮雷诺 | 1:12.463
- 查尔斯·勒克莱尔 | 索伯法拉利 | 1:12.829
- 布兰登哈特利 | SCUDERIA TORO ROSSO HONDA | 1:13.179
- 刘易斯·汉密尔顿 | 梅赛德斯| 1:12.460
- 兰斯漫步 | 威廉姆斯奔驰 | 1:13.323
- 罗曼·格罗斯让 | 哈斯法拉利 | 1:12.930
- 费尔南多·阿隆索 | 迈凯轮雷诺 | 1:12.657
- 谢尔盖·西罗特金 | 威廉姆斯奔驰 | 1:12.706
- 尼科·霍肯伯格 | 雷诺 | 1:13.065
- 马库斯·爱立信 | 索伯法拉利 | 1:13.265
- 埃斯特班奥康 | FORCE INDIA MERCEDES | 1:13.028
- 皮埃尔·加斯利 | SCUDERIA TORO ROSSO HONDA | 1:12.941
- 基米莱科宁 | 法拉利 | 1:12.639
请告诉我如何使用排序时间输出结果,如下所示:

正如我已经说过的,最好先解析这些数据并将其转化为适当的形式。因此,对于数据,我们将创建 Person 类,它具有三个对应的字段。首先我们创建这个类的实例,把它们放在一个集合中,现在我们可以对它们做任何我们想做的事情。为了按日期排序,我们编写了一个简单的比较器类并在集合上调用 sort 方法。当我们需要另一个排序时,我们用任何逻辑编写另一个比较器。因此,您大大简化了程序的进一步扩展。唯一的一点 - 你没有回答时间格式。因此,优化时间本身的解析器。
我进行了排序,代码如下(CalculateResults 方法,我没有提交审查,现在返回一个 LinkedList)。问题仍然是输出格式(分隔符“|”必须根据级别设置,并且在第 15 个骑手之后必须有分隔符“-----”)。