所以我正在運行一些運行次數(shù)超過 30 萬次的代碼。每次運行此代碼時,它最多返回 300k 個值。我目前將得到的結(jié)果存儲在ArrayList:List<List<Object>> thisList = new ArrayList<List<Object>();for (int i = 0; i < 300000; i++) { thisList.add(new ArrayList<Object>());}for (int i = 0; i < 300000; i++) { List<Object> result = someCode(); for (Object obj : result) { thisList.get(obj.id).add(obj.value); }}在此代碼中,每次obj獲取時,它都會有一個值obj.id,該值指定必須存儲在何處index。Listobj.value隨著搜索的繼續(xù),將結(jié)果存儲在其他地方的最有效方法是什么?我的代碼似乎在迭代 400 之后停止工作,很可能是由于內(nèi)存不足問題。我考慮過使用一個簡單的文本文檔,其中每行代表一個List<Object>,但通過一些谷歌搜索,似乎無法附加到特定行,并且所有建議似乎都指向覆蓋整個文本文檔。我以前從未使用過數(shù)據(jù)庫,這就是為什么我現(xiàn)在試圖避免這種情況。如果有人能給我關(guān)于我能做什么的建議,我將不勝感激。編輯:是否有一種不使用數(shù)據(jù)庫的方法,在每次迭代外部之后for loop,可以存儲數(shù)據(jù)?例如,給定一個文件當(dāng)前包含List 0: obj.value1 obj.value2List 1: obj.value1 obj.value4...List 300000: obj.value3 obj.value8結(jié)果包含{obj<1, 100>, obj<0, 3>, ...}其中每個對象的形式為obj<id, value>,文件變?yōu)長ist 0: obj.value1 obj.value2 obj.value3List 1: obj.value1 obj.value4 obj.value100...List 300000: obj.value3 obj.value8
添加回答
舉報
0/150
提交
取消