Stateless and Stateful Operations
Intermediate operations in the stream are classified to two types: stateless and stateful. In a stateless operation, each element is processed independently of the others. In a stateful operation, the processing of an element may depend on aspects of the other elements. For example, consider the following program:
The sorted() method produces a stream that contains the elements of the invoking stream sorted according to natural order. Sorting is a stateful operation because an element’s order depends on the values of the other elements. Thus, the sorted( ) method is stateful. However, filtering elements based on a stateless predicate is stateless because each element is handled individually. Thus, filter( ) can (and should be) stateless. The difference between stateless and stateful operations is especially important when parallel processing of a stream is desired because a stateful operation may require more than one pass to complete.
Program
Program Source
import java.util.ArrayList; public class Javaapp { public static void main(String[] args) { ArrayList<Integer> arylist = new ArrayList<Integer>(); arylist.add(100); arylist.add(60); arylist.add(80); arylist.add(30); arylist.add(10); arylist.stream().sorted().forEach((a)->System.out.print(a+" ")); System.out.println(); arylist.stream().filter((a)->a<200).forEach((a)->System.out.print(a+" ")); } }