幾年後我基本上忽略了語言,並且遇到了一個我無法弄清楚的問題,我正在修補Java。我有一個HashMap<String, Integer>
,我用一系列3個字符串初始化。我想在一個更大的字符串中查找這些字符串的所有實例,並將計數的事件存儲在Hashtable中。我試圖這樣做,用下面的代碼:未更新的哈希表值
private void countGenes(){
int start = 0;
int end = genome.length - 1;
for(String key : genes.keySet())
{
int value = findGenes(key, start, end);
genes.put(key, value);
}
}
private int findGenes(String gene, int start, int end)
{
if (start + gene.length() > end || !genome.toString().contains(gene))
{
return 0;
}
else
{
return findGenes(gene, gene.indexOf(gene) + 1 , end) + 1;
}
}
其中genes
是Hashtable已經初始化一系列字符串(關鍵),並設置爲零計數(值)。當我運行此代碼時,調試器顯示遞歸函數findGenes
似乎正確計數,但這些值未更新到genes
。
我對每個語法都不熟悉Java的,但我確實知道像C#這樣的其他語言對修改正在迭代的項目沒有反應。但是,我期望拋出一個異常;相反,這只是不更新項目。也許有一些陰影在發生?
我認爲Java的邏輯是,你很好,因爲你不修改ps:'Hashtable'已經死了,使用'(Hash)Map' – zapl