我创建了一个jsp页面,它从用户那里获取id,然后调用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>rn" +
"<tr>rn" +
"<th>User Id</th>rn" +
"<th>Username</th>rn" +
"</tr>rn" +
"<tr>rn" +
"<td>"+value+"</td>rn" +
"<td>"+name+"</td>rn" +
"</tr>rn" +
"</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
我不知道应该如何做到这一点。
您正在迭代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();
...
}