java填充Hashmap的问题

发布于 2024-11-10 17:22:42 字数 1389 浏览 4 评论 0原文

你好 我想用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

欲拥i 2024-11-17 17:22:42

您需要为每个映射值创建一个新的受让人列表实例,而不是清除列表。

基本上这一行需要位于循环内部而不是之前:

ArrayList<String> listassignee = new ArrayList<String>();

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:

ArrayList<String> listassignee = new ArrayList<String>();
筑梦 2024-11-17 17:22:42

每次迭代低谷
listassignee = new ArrayList()

Every time you iterate trough
listassignee = new ArrayList<String>()

桃酥萝莉 2024-11-17 17:22:42

我已经重写了你的代码以使其工作(尽管有风格问题)

public HashMap<String, ArrayList<String>> MAPAssigneeByissue() throws SQLException {  
    Issue iss = new Issue(); //a class return list of issue

    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 = "my SQL:retrieve list assignee for each ticket (o.tostring) ";
        ResultSet rs2 = conn.st.executeQuery(sql2);

        ArrayList<String> listassignee = new ArrayList<String>();

        while(rs2.next()) {
            String str = rs2.getString(1);
            listassignee.add(str);
        }

        mapTicketassignee.put(o.toString(), listassignee);
    }

    System.out.println("My map"+mapTicketassignee.toString());
    return mapTicketassignee;
}

I have rewrtten your code to make it work (style issues notwithstanding)

public HashMap<String, ArrayList<String>> MAPAssigneeByissue() throws SQLException {  
    Issue iss = new Issue(); //a class return list of issue

    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 = "my SQL:retrieve list assignee for each ticket (o.tostring) ";
        ResultSet rs2 = conn.st.executeQuery(sql2);

        ArrayList<String> listassignee = new ArrayList<String>();

        while(rs2.next()) {
            String str = rs2.getString(1);
            listassignee.add(str);
        }

        mapTicketassignee.put(o.toString(), listassignee);
    }

    System.out.println("My map"+mapTicketassignee.toString());
    return mapTicketassignee;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文