- Discussion
- Resources
- Quick Guide
- Fixed Length Streams
- Infinite Streams
- Terminal methods
- Intermediate Methods
- Exception Handling
- Type Inference
- Pure Functions
- First Class Functions
- Returning a Function
- High Order Functions
- Collections
- Constructor References
- Method References
- Functional Interfaces
- Default Methods
- Lambda Expressions
- Reducing
- Currying
- Closure
- Optionals & Monads
- Parallelism
- Recursion
- Persistent Data Structure
- Eager vs Lazy Evaluation
- Functional Composition
- Functions
- Overview
- Home
Selected Reading
- Who is Who
- Computer Glossary
- HR Interview Questions
- Effective Resume Writing
- Questions and Answers
- UPSC IAS Exams Notes
Functional Programming - Terminal Methods
When a terminal method in invoked on a stream, iteration starts on stream and any other chained stream. Once the iteration is over then the result of terminal method is returned. A terminal method does not return a Stream thus once a terminal method is invoked over a stream then its chaining of non-terminal methods or intermediate methods stops/terminates.
Generally, terminal methods returns a single value and are invoked on each element of the stream. Following are some of the important terminal methods of Stream interface. Each terminal function takes a predicate function, initiates the iterations of elements, apply the predicate on each element.
anyMatch − If predicate returns true for any of the element, it returns true. If no element matches, false is returned.
allMatch − If predicate returns false for any of the element, it returns false. If all element matches, true is returned.
noneMatch − If no element matches, true is returned otherwise false is returned.
collect − each element is stored into the collection passed.
count − returns count of elements passed through intermediate methods.
findAny − returns Optional instance containing any element or empty instance is returned.
findFirst − returns first element under Optional instance. For empty stream, empty instance is returned.
forEach − apply the consumer function on each element. Used to print all elements of a stream.
min − returns the smallest element of the stream. Compares elements based on comparator predicate passed.
max − returns the largest element of the stream. Compares elements based on comparator predicate passed.
reduce − reduces all elements to a single element using the predicate passed.
toArray − returns arrays of elements of stream.
Example - Terminal Methods
import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; pubpc class FunctionTester { pubpc static void main(String[] args) { List<String> stringList = Arrays.asList("One", "Two", "Three", "Four", "Five", "One"); System.out.println("Example - anyMatch "); //anyMatch - check if Two is present? System.out.println("Two is present: " + stringList .stream() .anyMatch(s -> {return s.contains("Two");})); System.out.println(" Example - allMatch "); //allMatch - check if length of each string is greater than 2. System.out.println("Length > 2: " + stringList .stream() .allMatch(s -> {return s.length() > 2;})); System.out.println(" Example - noneMatch "); //noneMatch - check if length of each string is greater than 6. System.out.println("Length > 6: " + stringList .stream() .noneMatch(s -> {return s.length() > 6;})); System.out.println(" Example - collect "); System.out.println("List: " + stringList .stream() .filter(s -> {return s.length() > 3;}) .collect(Collectors.toList())); System.out.println(" Example - count "); System.out.println("Count: " + stringList .stream() .filter(s -> {return s.length() > 3;}) .count()); System.out.println(" Example - findAny "); System.out.println("findAny: " + stringList .stream() .findAny().get()); System.out.println(" Example - findFirst "); System.out.println("findFirst: " + stringList .stream() .findFirst().get()); System.out.println(" Example - forEach "); stringList .stream() .forEach(System.out::println); System.out.println(" Example - min "); System.out.println("min: " + stringList .stream() .min((s1, s2) -> { return s1.compareTo(s2);})); System.out.println(" Example - max "); System.out.println("min: " + stringList .stream() .max((s1, s2) -> { return s1.compareTo(s2);})); System.out.println(" Example - reduce "); System.out.println("reduced: " + stringList .stream() .reduce((s1, s2) -> { return s1 + ", "+ s2;}) .get()); } }
Output
Example - anyMatch Two is present: true Example - allMatch Length > 2: true Example - noneMatch Length > 6: true Example - collect List: [Three, Four, Five] Example - count Count: 3 Example - findAny findAny: One Example - findFirst findFirst: One Example - forEach One Two Three Four Five One Example - min min: Optional[Five] Example - max min: Optional[Two] Example - reduce reduced: One, Two, Three, Four, Five, OneAdvertisements