Java 表番石榴和HashMap
我有Java 表番石榴和HashMap,java,hashmap,guava,Java,Hashmap,Guava,我有Table和HashMap 表employeeYearsOfService AT&T={Bill Smith=2.0, Stacy Lerner=1.4}, fatima={Bill Smith=1.0, Stacy Lerner=3.0} HashMaphm1 AT&T=0.962, fatima=0.888 我想计算并将结果存储在新的HashMaphm4 AT&T=0.2.812 fatima=4.0108 结石是 生成我的新HashMaphm4 AT
Table
和HashMap
表employeeYearsOfService
AT&T={Bill Smith=2.0, Stacy Lerner=1.4},
fatima={Bill Smith=1.0, Stacy Lerner=3.0}
HashMaphm1
AT&T=0.962,
fatima=0.888
我想计算并将结果存储在新的HashMaphm4
AT&T=0.2.812
fatima=4.0108
结石是
生成我的新HashMaphm4
AT&T=0.2.812
fatima=4.0108
我的代码
我对HashMap和表使用循环,但结果是错误的
Double res = 0.0;
for (Double mapValue : hm1.values()) {
for (String ke : employeeYearsOfService.columnKeySet()) {
for (Entry<String, Double> employeek :
employeeYearsOfService.column(ke).entrySet()) {
res+ = employeek.getValue() * mapValue.doubleValue();
}
hm4.put(ke, res);
}
}
Double res=0.0;
for(双映射值:hm1.values()){
对于(字符串ke:employeeYearsOfService.columnKeySet()){
对于(入职员工):
employeeyearsoffice.column(ke.entrySet()){
res+=employeek.getValue()*mapValue.doubleValue();
}
hm4.put(ke,res);
}
}
你能帮我找到我的错误吗?“结果是错误的”-以什么方式?只是猜测:
hm4.put(ke,res)代码>-在这里,您正在替换任何可能的以前的值,同时可能要添加它,即查找任何现有值,将其添加到res
,然后将结果放入地图中。Thomas it calculatfor column BIll Smith |(2.0*0.962+1.0*0.962+2.0*0.888+1.0*0.888)
而不是我想要的你更新的代码,这并不奇怪。查看res
-您正在为所有ke
值计算一个值。相反,当您在新的ke
上操作时,您需要为每个ke
使用一个值,或者重置res
——但是在这种情况下,您可能必须首先重新构造代码以循环列键。顺便说一句,通过使用调试器单步执行代码并检查值,这个问题应该很容易解决。这样你就可以很快发现哪里出了问题。