gpt4 book ai didi

java - ArrayList 中的元素消失

转载 作者:行者123 更新时间:2023-12-01 17:41:58 25 4
gpt4 key购买 nike

我在使用这段代码时遇到了一些问题:

ArrayList<Shop> listShops = new ArrayList<Shop>();
Shop currShop = new Shop();

String query = "SELECT * FROM Shop WHERE... ";

try {
PreparedStatement statement = connection.prepareStatement(query);
ResultSet rs = statement.executeQuery();
while(rs.next()) {
currShop.setName(rs.getString(1));
currShop.setDescription(rs.getString(2));
System.out.println(listShops.add(currShop));
}
} catch (SQLException e) {
e.printStackTrace();
}

System.out.println("List size: "+listShop.getSize());
for(Shop s: listShop) {
System.out.println(s.getName());
}

输出:

true
true
true
[...]
List size: 78
[78 empty strings]

我不明白为什么它给我那些空行。我 100% 确定 currShop 工作正常,因为我打印了 currShop.getName()currShop.getDescription() (在 rs.next() while 中)并且它们两者都有效。它还为我提供了“true” boolean 值,表明已成功插入 ArrayList,那么为什么它不打印任何内容?

最佳答案

您应该每次在 while 循环内创建一个新的 Shop 对象:

while(rs.next()) {
Shop currShop = new Shop();
currShop.setName(rs.getString(1));
currShop.setDescription(rs.getString(2));
System.out.println(listShops.add(currShop));
}

否则,您只需将单个 Shop 实例多次添加到列表中,并在每次迭代时覆盖名称和描述。

关于java - ArrayList 中的元素消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59982771/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com