Le code suivant divise un flux d'objets en blocs de 1 000, les traite lors de la matérialisation et renvoie le nombre total d'objets à la fin.Le regroupement StreamEx dans des listes renvoie un nombre incorrect d'enregistrements
Dans tous les cas, le nombre affiché est correct à moins que la taille du cours d'eau se trouve être 1. Dans le cas, la taille du flux est 1, le nombre retourné est 0.
Toute aide serait grandement appréciée. J'ai également dû pirater l'appel de retour dans le cas où il n'y a pas d'enregistrements dans le flux à 0. Je voudrais résoudre ce problème aussi.
AtomicInteger recordCounter = new AtomicInteger(0);
try (StreamEx<MyObject> stream = StreamEx.of(myObjects)) {
stream.groupRuns((prev, next) -> recordCounter.incrementAndGet() % 1000 != 0)
.forEach((chunk) ->
{
//... process each chunk
}
);
} catch(Exception e) {
throw new MyRuntimeException("Failure streaming...", e);
} finally {
myObjects.close();
}
return recordCounter.get() == 0 ? 0 : recordCounter.incrementAndGet();
pourquoi avez-vous revenir 'contre + 1' et non' counter'? – wargre
Parce que sinon, il renvoie toujours 1 moins que ce qu'il est censé faire. –