2011-04-26 60 views
0

可能重複:
Object attributes to same-length representation for faster reading轉換對象屬性總是相同長度的字符串

我想我的對象寫入一個文件,每個對象的表示是相同的長度,所以我可以跳到文件的一部分進行閱讀,而無需閱讀整個文件。

這是必要的,因爲該文件將被許多虛擬機讀取並且將成爲TB大小。這樣做的最好方法是什麼?我已經嘗試將它們放入一個整數數組來嘗試實現這一點,但似乎這一步必須是不必要的。我一次將每個對象傳回一個不同的作者對象。乾杯

// Convert Person attributes to integers and put in an array 
int[] person = new int[8]; 
person[0] = age; 
if (gender.equals("m")) {person[1] = 1;} 
else {person[1] = 0;} 
person[2] = children; 
person[3] = goodHealth? 1:0; 
person[4] = cars; 
person[5] = avgWeekShopping; 
person[6] = salary; 
person[7] = smoker? 1:0; 

return person; 
+0

你會發布代碼示例嗎? – Rom1 2011-04-26 12:56:21

+0

你在寫任意對象嗎?或者它們都是一些類層次結構的不同實例?另外,將它們全部寫入1個文件的目的是什麼?你是指什麼不同的虛擬機將讀取文件? – 2011-04-26 12:58:20

+0

他們都是同一類的實例。我正在模擬一個查詢一個非常大的虛擬人口數據集的電子社會科學系統。我希望工作VM從一個文件中讀取他們分配的塊。我知道會有I/O瓶頸。我現在會發布一些代碼。謝謝 – bashcrufter 2011-04-26 13:12:29

回答

1

如果將值寫入字節數組,它會更快。這可以直接寫入任何輸出流。而且您可以節省一些空間,例如將吸菸者標誌編碼爲單個字節。

所以你需要靜態方法,一個需要一個bean並返回一個byte[],另一個需要byte[]並創建一個新的bean。所有數組的大小相同,您可以輕鬆計算各個數據集的偏移量,而無需額外的索引文件。

相關問題