List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8);
List<Integer> twoEvenSquares = numbers.stream().filter(n -> {
System.out.println("filtering " + n);
return n % 2 == 0;
}).map(n -> {
System.out.println("mapping " + n);
return n * n;
}).limit(2).collect(Collectors.toList());
for(Integer i : twoEvenSquares)
{
System.out.println(i);
}
quando eseguita la logica sottostante uscita venneJava 8 operazioni streaming in ordine di esecuzione
filtering 1
filtering 2
mapping 2
filtering 3
filtering 4
mapping 4
4
16
se il flusso segue il concetto corto circuito (dove usiamo funzionamento corrente limite), l'uscita deve essere come di seguito:
filtering 1
filtering 2
filtering 3
filtering 4
mapping 2
mapping 4
4
16
perché dopo il filtraggio 2, dobbiamo trovare ancora un elemento in più per stratificare limite (2), il funzionamento, quindi perché l'uscita non è venuta come ho spiegato?
Perché "deve" essere come il secondo? Perché non dovrebbe (e non lo è). –