2013-10-20 38 views
0

我正在編寫一個boggle求解器,爲此我需要填充一個字典。我的做法是做一個靜態初始化是這樣的:閱讀字典的文本文件?懶惰初始化是否是一個很好的選擇?

private static final Set<String> dictionayKeys = DictionaryReader.populateDictionaryWords("/../dictionary.text); 

要添加更多的細節,驚奇求解只會用dictionaryKeys驗證一個字包含然後dictionaryKeys例如dictionaryKeys.contains(currWord)

現在的問題 - 我有一直在讀懶惰初始化,並想知道如果這個例子將是一個理想的惰性初始化,因爲文件IO涉及?

+1

您需要配置文件...加載數據需要多長時間?如果需要很長時間這將是一個很好的候選人懶惰加載單身,甚至加載通過併發庫(看看[我的上一個問題](http://stackoverflow.com/questions/6189099/lazy-loaded-在我之前提到的關於延遲加載初始化的問題中,singleton-double-checked-locking-vs-initialization-on-demand-holder) –

回答

2

可能不在這種情況下。你不是總是需要在某個時候填寫詞典嗎?我寧願在啓動程序時再等一會,以便它可以填充一個字典,然後當我玩遊戲時,程序似乎掛起,而它卻懶散地填充它。

我認爲懶惰的初始化更適用於昂貴的操作並且數據並不總是必需的。例如,hibernate可能會懶惰地加載實體對象的某些與實體關鍵字無關的字段,因爲並不是每個實體的用例都需要那部分數據,而只是那些明確要求的數據。

+0

'AND數據並不總是必需的。好點子 – JavaDeveloper

相關問題