Я использую 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
Создайте новый экземпляр CompanyRelatedInfo вместо того, чтобы использовать его. Вы просто изменяете один и тот же объект для всех строк и помещаете его несколько раз в список. Поэтому попробуйте использовать следующее:
while(rs.next()) {
CompanyRelatedInfo ci = new CompanyRelatedInfo();
...