繁体   English   中英

Java从文件中读取分数

[英]Java read score from file

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

如何仅按顺序阅读前3个得分并显示它们?
因此它将是:
嘿嘿得分:100
john1337得分:80
dfawfawf得分:40

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

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

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。

您无法访问3个最高得分而不知道它们在文件中的位置。 因此,您需要知道最高分在文件中的位置。 为此,您需要从文件中读取所有乐谱,解析字符串(例如,在“:”处分割,删除单词“ score”并修整生成的字符串),然后评估乐谱。 您可以使用哈希图或类似方法对它们进行排序。 因此,使用简单的文本文件作为数据源是不可能的。 例如,如果您使用数据库,则可以创建一个查询,该查询返回前3个得分。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM