Как создать класс Arraylist, который может хранить несколько объектов типа данных в Java

1

Я использую JDBC-запрос, который возвращает результат следующим образом:

Name       Id
A          1
B          2

Затем я пытаюсь создать arrylist на основе результата запроса, используя следующий класс java:

private class GetCompanyInfo implements Work {
    ArrayList<CompanyRelatedInfo> companyRelatedDataList = new ArrayList<CompanyRelatedInfo>();
    private String queryString;

    @Override
    public void execute(Connection connection) throws SQLException {        
        PreparedStatement ps = connection.prepareStatement(queryString);
        ResultSet rs = ps.executeQuery();
        CompanyRelatedInfo ci = new CompanyRelatedInfo();       
        while(rs.next())
        {   
            String name = rs.getString("name");
            Long id = rs.getLong("id");

            ci.setName(name);
            ci.setId(id);
            companyRelatedDataList.add(ci);
        }   
        rs.close();
        ps.close();
    }
}

Но проблема заключается в том, что результат работы arraylist выглядит следующим образом:

Name       Id
B          2
B          2

Как я могу создать arraylist следующим образом:

Name       Id
A          1
B          2
Теги:
arraylist
types

1 ответ

4
Лучший ответ

Создайте новый экземпляр CompanyRelatedInfo вместо того, чтобы использовать его. Вы просто изменяете один и тот же объект для всех строк и помещаете его несколько раз в список. Поэтому попробуйте использовать следующее:

while(rs.next()) {   
  CompanyRelatedInfo ci = new CompanyRelatedInfo();       
  ...
  • 0
    Благодарю. Я не заметил, что поместил экземпляр за пределы цикла while. Еще раз спасибо. :-)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню