我想遍歷地圖中的幾個條目...Java的地圖迭代
在wizard()
,我把4名映射在map
,然後發送地圖有兩個輸入cancer
和test
一起被calcuated ...
public int wizard() {
Map<String, String> map = new HashMap<String, String>();
//historical data of having cancer given test result...
map.put("+cancer", "+test");
map.put("-cancer", "+test");
map.put("-cancer", "-test");
map.put("+cancer", "+test");
String cancer = "+cancer";
String test = "+test";
//send historical data to be calculated...
return calculate(cancer, test, map);
}
這裏,calcuate()
遍歷地圖索引尋找到兩個輸入cancer
和test
比賽,然後返回的條件概率:
public int calculate(String cancer, String test, Map<String, String> map) {
int tests = 0;
int both = 0;
System.out.println("Cancer: " + cancer + "; Test: " + test);
for (int i = 0; i <= map.size(); i++) {
if (map.containsValue(test)) {
tests++;
if (map.containsValue(cancer)) {
both++;
}
}
}
System.out.println("{Cancer & Tests}: " + both + "; Tests: " + tests);
return both/tests;
}
輸出:
Cancer: +cancer; Test: +test
{Cancer & Tests}: 0; {Tests}: 3
P(Cancer|Test): 0
你可以看到,both++
沒有增加(又名:{Cancer & Tests}
:不應該是0
),因此P(Cancer|Test)
沒有給予正確的答案。
這是爲什麼?我是否在地圖上錯誤地迭代?
好,嗯,是有一些其他的方式做一個關聯數組,如:'$ DATA [0] =陣列( 「+癌症」,「+測試「);','$ Data [1] = array(」 - cancer「,」-test「);'?我只想遍歷關聯數組的每個部分,並查看這些值是否包含在特定的數組索引處。 – Growler
我已經用可能的解決方案修改了我的答案。 – rgettman