为什么我不能通过字符串键在hashmap中调用此值?

时间:2013-06-10 12:36:07

标签: java jsp hashmap

非常简单的代码......不起作用,我不知道为什么:)

String appserver="";
HashMap hm = new HashMap();
hm.put("APPSERVER101", "node101");
hm.put("APPSERVER103", "node102");
hm.put("APPSERVER105", "node103");
hm.put("APPSERVER107", "node104");
hm.put("APPSERVER201", "node108");
hm.put("APPSERVER203", "node110");

...

appserver = rs_g.getString("APPSERVER");

...

out.println("<tr><td class=\"good\">" + hm.get(appserver) + "</td>");

结果为NULL,但是如果我手动设置它:

out.println("<tr><td class=\"good\">" + hm.get("APPSERVER101") + "</td>");

我得到了正确的结果

2 个答案:

答案 0 :(得分:3)

尝试使用hm.get(appserver)修剪以确保没有多余的空格导致问题。同时尝试打印appserver变量的值,以确保它包含"APPSERVER101"而不包含任何其他内容。

答案 1 :(得分:0)

rs_g.getString("APPSERVER");不得返回值"APPSERVER101",否则表达式hm.get(appserver)hm.get("APPSERVER101")将返回相同的结果。

get方法中发生的所有事情都是将传递的值与地图中的每个键进行比较。如果该值与任何键之间不匹配,那将是因为传递的值与.equals()方法判断的任何键不同(在字符串的情况下)