簡體   English   中英

Java:從文件存儲/檢索鍛煉信息的最有效方法?

[英]Java: Most efficient way to store/retrieve workout information from a file?

我正在一個Java項目中上課,該項目將鍛煉信息存儲在一個平面文件中。 每個文件將具有一個練習(BenchPress.data)的信息,該信息包含時間(自紀元以來的毫秒數),權重和重復次數。

例:

1258355921365:245:12

1258355921365:245:10

1258355921365:245:8

存儲和檢索此數據的最有效方法是什么? 將對它進行圖形化和搜索,以將練習限制在特定日期或日期范圍內。

我的想法是將最新信息寫入文件頂部,而不是在末尾附加。 這樣,當我從頂部開始閱讀時,我將擁有最新的信息,它將與大多數搜索(假設)相匹配。

但是,不能保證日期順序。 無論出於何種原因,用戶都可以今天參加鍛煉,然后進入最后幾周進行鍛煉。 保存時,我是否該點擊一下以按日期訂購所有信息?

我應該走一個完全不同的方向嗎? 我知道數據庫會很理想,但這是一個小組項目,管理我們所有人之間的數據庫安裝和數據同步並不理想。 其他人則沒有數據庫方面的經驗,這將使評分變得困難。

因此,感謝您的任何建議。

-約翰

不要使事情過於復雜。 除非您要處理數百萬條記錄,否則您可以將整個內容讀入內存並按自己喜歡的方式對其進行排序。 並且總是在最后添加記錄,這樣就不太可能損壞文件。

對於簡單的項目,使用JavaDB / Apache Derby之類的嵌入式工具可能是個好主意。 數據庫的配置絕對是最少的,在您的情況下,您最多只需要2個表(用戶和鍛煉)。 將數據導出到文件對於團隊成員之間的同步也非常簡單。

正如yu_sha指出的那樣,除非期望有一個大的數據集(要在PC上運行,> 50000),否則您可以使用該文件並將所有內容讀取到內存中。

通過BufferedReader讀取每一行,並使用StringTokenizer解析。 查看數據,我可能會在List中存儲一個字段數組,可以根據您的喜好對其進行迭代和排序。

如果必須以這種格式存儲文件,則最好在啟動時將整個內容讀入內存並將其存儲在TreeMap或其他排序的可搜索映射中。 然后,您可以使用TreeMap的便捷方法(例如ceilingKey或類似的floorKey)來查找某些日期/時間附近的匹配項。

使用flatworm ,這是一個允許解析和創建平面文件的Java庫。 用一個簡單的XML定義文件描述格式,然后就可以了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM