gpt4 book ai didi

Java map 迭代

转载 作者:行者123 更新时间:2023-12-01 07:09:06 25 4
gpt4 key购买 nike

我想迭代 map 中的多个条目...

wizard() ,我在 map 中放入了 4 个映射,然后发送 map 以及两个输入 cancertest待计算...

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)没有给出正确答案。

这是为什么呢?我在 map 上的迭代是否错误?

最佳答案

为什么需要 for 循环?我不确定你想实现什么目标。您应该在“ key ”中寻找癌症。

应该是这样的

    if (map.containsKey(cancer)) {
}

另一个神秘的事情是:

    map.put("-cancer", "+test");
map.put("-cancer", "-test");

map 上只会出现第二个条目。您正在用第二个条目覆盖第一个条目。

也许你可以像这样迭代 map

    for (Map.Entry<String, String> entry : map.entrySet()) {
String entry = entry.getKey(), value = entry.getValue();
//Do comparisons.
//increment counter
}

关于Java map 迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17577005/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com