使用Map或List或Set的決定取決於正在讀取的數據的目的。
- 如果你需要索引的數據(例如,通過ID),然後用地圖
- 否則,如果您想通過數據,以便重複,我會建議列出或設置集合。如果你的數據集不支持重複,我建議你設置一個或者一個列表,如果它有重複的話。
關於代碼使用地圖,所述一段代碼下面組塊和數據每ID:
public void read() {
Map<String, LinkedHashMap<String, String>> fileRecords = new LinkedHashMap<>();
String id, block, data;
//while(dataInFile()) {
// I assume data is read row by row into vars id, block and data
// get the block map for the just read ID
LinkedHashMap<String, String> blockRecords = fileRecords.get(id);
// first Block for the ID
if (blockRecords == null) {
blockRecords = new LinkedHashMap<>();
fileRecords.put(id, blockRecords);
}
// read data and block
blockRecords.put(block, data);
}
此代碼還允許您組塊和數據,如果ID不文件中排序。 如果ID始終是一個整數,我建議您使用Integer而不是String。它在匹配期間節省內存和CPU。另外,如果你的文件中的數據不只是這三個字段,我建議你使用對象代替。然後,您需要更加關注數據的用法來設計對象模型。
使用sql - 它會更好 –
Sql不能使用,bcoz我需要從文件中讀取數據,甚至是大數據文件,數據大約有70K條記錄。 – rockersdeal
看起來你並沒有真正的鑰匙。三列似乎是關鍵。如果你沒有提供一個散列表的唯一鍵,它當然會覆蓋以前的值。不會添加額外的自動生成的ID(即autoincremental)列幫助? –