java填充Hashmap的问题
你好 我想用 value => 填充哈希图 关键:idissue value:arraylist(受让人列表) 我的函数为我的所有问题返回相同的受让人列表的问题: 我的地图{10700=[x,y,z], 10500=[x,y,z],10600=[x,y,z]......
或者结果应该是这样的: 我的地图{10700=[x,y,z],10500=[w,v,q,v,t,z],10600=[m,r,t,i]...... 我想清除我的列表 listassignee.clear();在 put 指令之后,但在本例中为空: 我的地图{10700=[], 10500=[], 10601=[], 10400=[], 10401=[], 10301=[], 10300=[], 10600=[]}
有什么建议吗?
public HashMap<String ,ArrayList<String>> MAPAssigneeByissue() throws SQLException
{
Issue iss =new Issue(); //a class return list of issue
ArrayList<String> listassignee = new ArrayList<String>();
HashMap<String ,ArrayList<String>> mapTicketassignee = new HashMap<String ,ArrayList<String>> ();
Connectionx conn=new Connectionx();
for (Iterator it = iss.getListissue().iterator();it.hasNext();)
{
Object o = (Object) it.next();
String sql2;
sql2=" my SQL:retrieve list assignee for each ticket (o.tostring) ";
ResultSet rs2 = conn.st. executeQuery(sql2);
while(rs2.next())
{
String str= rs2.getString(1);
listassignee.add(str);
}
mapTicketassignee.put(o.toString(),listassignee);
//listassignee.clear();
}
System.out.println("My map"+mapTicketassignee.toString());
return mapTicketassignee;
}
Hello
I want to fill an hashmap with value =>
key :idissue
value:arraylist (list of assignee)
The problem that my function return the same liste of assignee for all my issues:
My map{10700=[x,y,z], 10500=[x,y,z],10600=[x,y,z].......
Or the result should be like this:
My map{10700=[x,y,z], 10500=[w,v,q,v,t,z],10600=[m,r,t,i].......
I treid to clear my list listassignee.clear(); after the put instruction but in this case is empty :
My map{10700=[], 10500=[], 10601=[], 10400=[], 10401=[], 10301=[], 10300=[], 10600=[]}
Any suggestion please??
public HashMap<String ,ArrayList<String>> MAPAssigneeByissue() throws SQLException
{
Issue iss =new Issue(); //a class return list of issue
ArrayList<String> listassignee = new ArrayList<String>();
HashMap<String ,ArrayList<String>> mapTicketassignee = new HashMap<String ,ArrayList<String>> ();
Connectionx conn=new Connectionx();
for (Iterator it = iss.getListissue().iterator();it.hasNext();)
{
Object o = (Object) it.next();
String sql2;
sql2=" my SQL:retrieve list assignee for each ticket (o.tostring) ";
ResultSet rs2 = conn.st. executeQuery(sql2);
while(rs2.next())
{
String str= rs2.getString(1);
listassignee.add(str);
}
mapTicketassignee.put(o.toString(),listassignee);
//listassignee.clear();
}
System.out.println("My map"+mapTicketassignee.toString());
return mapTicketassignee;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您需要为每个映射值创建一个新的受让人列表实例,而不是清除列表。
基本上这一行需要位于循环内部而不是之前:
Instead of clearing the list you need to create a new instance of the assignee list for each map value.
Basically this line needs to be inside your loop instead of before:
每次迭代低谷
listassignee = new ArrayList()
Every time you iterate trough
listassignee = new ArrayList<String>()
我已经重写了你的代码以使其工作(尽管有风格问题)
I have rewrtten your code to make it work (style issues notwithstanding)