![](/img/trans.png)
[英]Java Read and Play MIDI file using public static void midi(Score score) method
[英]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.