Posts

Showing posts from May, 2022

Streams

  Streams      Java 8 introduces a new streaming metaphor to support functional programming. A stream is a sequence of elements that does not save the elements or modify the original source.  Functional programming in Java often involves generating a stream from some source of data, passing the elements through a series of intermediate operations (called a  pipeline ), and completing the process with a  terminal expression Streams can only be used once. After a stream has passed through zero or more intermediate operations and reached a terminal operation, it is finished. To process the values again, you need to make a new stream. Streams are also lazy . A stream will only process as much data as is necessary to reach the terminal condition.  Recipe 3.13  shows this in action. 3.1 Creating Streams Problem You want to create a stream from a source of data. Solution Use the static factory methods in the  Stream  interface, or the...

The java.util.function Package

Image
The java.util.function Package   One basic principle is that for either, there is always a context. Lambda expressions and method references are always assigned to functional interfaces, which provide information about the single abstract method being implemented. While many interfaces in the Java standard library contain only a single, abstract method and are thus functional interfaces, there is a new package that is specifically designed to contain only functional interfaces that are reused in the rest of the library. That package is called  java.util.function .   The interfaces in  java.util.function  fall into four categories:       (1) consumers -  Consumers take a generic argument and return nothing    (2) suppliers -     Suppliers  take no arguments and return a value      (3) predicates -   Predicates take an argument and return a boolean      (4) functions -...