java - 在 lambda 中使用 ResultSet java 时我缺少一个元素的奇怪场景
问题描述
当我在 lambda 函数内部迭代结果并将结果分配给 lambda 函数外部的变量时,我的 ResultSet 错过了一个元素。但是当我在 lambda 函数中声明一个变量,向它添加值并将其作为函数的一部分返回时,同样的工作正常。
我尝试放置一个计数变量并检查两种情况以查看 while 循环运行了多少次,我确认它运行的次数少了。
Map<String,String> map = new HashMap<>();
getTemplate.query("Some Query that returns 38251 elements", (ResultSet rs) -> {
int count = 0;
while(rs.next()) {
count++;
map.put(rs.getString("val"),rs.getString("val2"));
}
//count here is 38250
});
map.size() -> 38250 //Missing 1 element
但是当我这样做时
Map<String,String> correct = getTemplate.query("Some Query that returns 38251 elements", (ResultSet rs) -> {
Map<String,String> map = new HashMap<>();
int count = 0;
while(rs.next()) {
count++;
map.put(rs.getString("val"),rs.getString("val2"));
}
//count here is 38251
return map;
});
correct.size() // 38251 elements
解决方案
推荐阅读
- php - SpreadSheet - 未捕获的 InvalidArgumentException:文件“file.xlsx”不存在
- excel - 如何将数据从 excel 文件复制到 Azure DataStudio 以使用它创建表?(在 Mac 上)谢谢
- unix - 为什么 ps 显示新 pid 命名空间中的所有进程?
- python - 大多数“Pythonic”(或“Pandathonic”)方式遍历 DataFrame 并创建分组
- glsl - GLSL vec2 用作浮点数组?
- java - 根据 Java 中的内容将数组保存在多个 txt 文件中
- r - 如何使用 select() 从数据集中获取逻辑变量
- amazon-web-services - AWS EC2 静态数据 - 安全性
- python - 从文件python读取字节并转换为字符串
- azure-cosmosdb - 对于 Cosmos DB 和/或图形数据库,我是否可以让 O(1000s) 个顶点连接到单个顶点和 O(1000s) 个顶点属性?