我创建了一个jsp页面,该页面从用户那里获取ID,然后调用servlet,在该servlet中,我读取用户输入的值,然后传递给我的方法,该方法返回该对象,并将其存储在Hashmap作为键值对。
String id = request.getParameter("ManagerId");
//response.getWriter().println(id);
services1 s=new services1();
try {
//s.getList(id);
String name="";
String[] nameArray=new String[10];
System.out.println("id is ===> "+id);
Map<Object, Object> map=messageservice.getReportees(id);
Set s1=map.keySet();
for (Iterator iterator = s1.iterator(); iterator.hasNext();)
{
name = (String) iterator.next();
Collection c=map.values();
String value="";
for (Iterator iterator1 = c.iterator(); iterator.hasNext();)
{
value = (String) iterator1.next(); //error in this line
Map<Object, Object> mapData=jiraservice.getJiras(value);
//System.out.println(value);
System.out.println("returning map");
PrintWriter out=response.getWriter();
out.println("<html><body><table>\r\n" +
"<tr>\r\n" +
"<th>User Id</th>\r\n" +
"<th>Username</th>\r\n" +
"</tr>\r\n" +
"<tr>\r\n" +
"<td>"+value+"</td>\r\n" +
"<td>"+name+"</td>\r\n" +
"</tr>\r\n" +
"</table></body></html>");
}
}
}
以下是输出:
User Id Username
AR12345 Anagha R
User Id Username
MS12345 Anagha R
User Id Username
at12345 Anagha R
User Id Username
AR12345 Madhusudan S
User Id Username
MS12345 Madhusudan S
User Id Username
at12345 Madhusudan S
User Id Username
AR12345 Amreen Taj
User Id Username
MS12345 Amreen Taj
User Id Username
at12345 Amreen Taj
在我的输出中,它应该仅打印
User Id Username
AR12345 Amreen Taj
User Id Username
MS12345 Madhusudhan
User Id Username
at12345 Anagha R
我不知道该怎么做。
答案 0 :(得分:4)
您正在为Map
的每个键迭代Map
的所有值,这意味着Map
是否具有3个键值对(从输出中可以看出) ),则您将它们分别打印3次。
您只需要一个循环:
Map<Object, Object> map=messageservice.getReportees(id);
Set<Map.Entry<Object,Object> s1=map.entrySet();
for (Iterator<Map.Entry<Object,Object> iterator = s1.iterator(); iterator.hasNext();) {
Map.Entry<Object,Object> entry = iterator.next();
Object name = entry.getKey();
Object value = entry.getValue();
...
}