簡體   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