在lambda中使用ResultSet java时缺少一个元素的奇怪场景

在lambda中使用ResultSet java时缺少一个元素的奇怪场景,java,jdbc,Java,Jdbc,当我迭代lambda函数内部的结果,并将结果分配给lambda函数外部的变量时,我的ResultSet会丢失一个元素。但是,当我在lambda函数中声明一个变量,向它添加值并将其作为函数的一部分返回时,同样的方法也很好 我尝试放置一个count变量并检查这两种情况,以查看while循环运行了多少次,我确认它运行的次数少了一次 Map<String,String> map = new HashMap<>(); getTemplate.query("Some Query th

当我迭代lambda函数内部的结果,并将结果分配给lambda函数外部的变量时,我的ResultSet会丢失一个元素。但是,当我在lambda函数中声明一个变量,向它添加值并将其作为函数的一部分返回时,同样的方法也很好

我尝试放置一个count变量并检查这两种情况,以查看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 Map=newhashmap();
query(“返回38251个元素的某些查询”,(结果集rs)->{
整数计数=0;
while(rs.next()){
计数++;
map.put(rs.getString(“val”)、rs.getString(“val2”);
}
//这里的数字是38250
});
map.size()->38250//缺少1个元素
但当我这么做的时候

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
Map correct=getTemplate.query(“返回38251个元素的某些查询”,(结果集rs)->{
Map Map=newhashmap();
整数计数=0;
while(rs.next()){
计数++;
map.put(rs.getString(“val”)、rs.getString(“val2”);
}
//这里的数字是38251
返回图;
});
correct.size()//38251个元素

我正在使用Java 8!这毫无意义。在两次运行之间,必须在数据库中添加或删除元素。这没有意义。这两个代码具有相同的逻辑。我正在使用Java8!这毫无意义。在两次运行之间,必须在数据库中添加或删除元素。这没有意义。这两种代码具有相同的逻辑。