Мой ResultSet пропускает элемент, когда я перебираю результат внутри лямбда-функции и присваиваю результаты переменной вне лямбда-функции. Но то же самое прекрасно работает, когда я объявляю переменную внутри лямбда-функции, добавляю значения к ней и возвращаю ее как часть функции.
Я попытался поместить переменную count и проверить оба сценария, чтобы увидеть, сколько разцикл пока запущен, и я подтвердил, что он работает на один меньше.
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