Проблема с заполнением Hashmap Java - PullRequest
1 голос
/ 01 июня 2011

Hello Я хочу заполнить hashmap значением => ключ: idissue значение: 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 (); после положенной инструкции, но в этом случае пусто: Моя карта {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;
}

Ответы [ 3 ]

4 голосов
/ 01 июня 2011

Вместо очистки списка вам нужно создать новый экземпляр списка назначенных для каждого значения карты.

В основном эта строка должна быть внутри вашего цикла, а не до:

ArrayList<String> listassignee = new ArrayList<String>();
2 голосов
/ 01 июня 2011

Каждый раз, когда вы выполняете итерацию через
listassignee = new ArrayList<String>()

1 голос
/ 01 июня 2011

Я переписал ваш код, чтобы он работал (несмотря на проблемы со стилем)

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...