我試圖根據文本文件搜索常用英語單詞數組,以查看其中是否包含特定單詞。由於這個數組有大於700,000個單詞,並且如果在數組中有多達1000個單詞需要被檢查多次,我認爲根據長度將單詞分成單獨的數組或列表會更有效率。有沒有簡單的方法來做到這一點,而不使用開關或大量的if語句?像這樣:基於Java中的單詞長度將常見英語單詞陣列拆分爲單獨的列表/數組
for(int i = 0; i < commonWordArray.length; i++) {
if(commonWordArray[i].length == 2) {
twoLetterList.add(commonWordArray[i]);
else if(commonWordArray[i].length == 3) {
threeLetterList.add(commonWordArray[i]);
else if(commonWordArray[i].length == 4) {
fourLetterList.add(commonWordArray[i]);
}
...etc
}
然後做同樣的事情檢查句話的時候:
for(int i = 0; i < checkWords.length; i++) {
if(checkWords[i].length == 2) {
if(twoLetterList.contains(checkWords[i])) {
...etc
}
作爲存儲大陣在內存中可能是一個殺手,constatn對文件的訪問可能會降低你wodn,爲什麼你不想來存儲你的話在數據庫(即H2),只是運行簡單的查詢? – user902383
Java是否支持散列或關聯數組?如果是這樣,爲什麼不創建一個關鍵詞的散列,使查找變得容易。或者,你是否允許特定詞的子串? – sln
@ user902383我確實認爲這是一種更好的方法,但是這對我的研究論文中的一個簡單的密碼分析工具來說非常重要,在這裏可以將常用單詞文件作爲參數進行傳遞 –