首页 > 解决方案 > Java 从文件中读取分数

问题描述

如果我有一个具有以下外观的文本文件:
john1337 得分:80
may10 得分:23
dfawfawf 得分:40 heyhey 得分
:100
flow32 得分:25

如何按顺序只读取前 3 个分数并显示它们?
所以它会是: heyhey 得分
:100
john1337 得分:80
dfawfawf 得分:40

我试图避免按名称对整数进行排序,即“john1337”,而是按顺序显示实际的得分线,我该怎么做?

标签: javatext-files

解决方案


有一个仅用于教育目的的流解决方案,但您可能应该尝试以经典方式实现它。

Comparator<String> comparator = Comparator.comparing(o -> Integer.valueOf(o.split(":")[1].trim()));
Comparator<String> reversed = comparator.reversed();

Files.lines(Paths.get(PATH_TO_FILE))
        .sorted(reversed)
        .limit(3)
        .forEach(System.out::println);

这里Comparator用于按分数对所有行进行排序。然后使用limit流被截断为不超过 3。


推荐阅读