Java functional programming
Java functional programming
what do you mean by functional? it is an interface that contains only one abstract method.
what is predicate ? predicates mean functions with one argument that return a boolean value
consider an example:
@FunctionalInterface
public interface EvenOdd {
Boolean isEven(int number);
// rest can be only complete methods
}
in this there is only one method hence that is an potential predicate.
The above defined predicate can be used in the following manner:
public class StreamOne
{
public static void main(String[] args) {
EvenOdd evenOdd = num-> num%2==0; //Here we have provided the implementation for that predicate.
System.out.println("\n\n");
System.out.println(evenOdd.isEven(20));
System.out.println(evenOdd.isEven(21));
}
}
for simpler understanding, we could consider the example as:
public boolean isEven(int num){
Boolean val = num%2==0;
return val;
}
if we look carefully the compiler already knows that:
- method is alway public as this is from an interface
- compiler knows that it has a boolean return type, as there is only one method to look at.
- compiler knows the method name, as there is only one method to look at.
so we can omit all that info to
(num)->{
Boolean val = num%2==0;
return val;
}
and now because it has only one argument, we can get away with the bracket
num->{
Boolean val = num%2==0;
return val;
}
if we can make the method body to one liner then we can even remove the curly braces.
num -> num%2==0;
That is how we got this predicate.
Java provided functional interfaces
Interface | Description |
---|---|
BiConsumer<T,U> | Represents an operation that accepts two input arguments and returns no result. |
BiFunction<T,U,R> | Represents a function that accepts two arguments and produces a result. |
BinaryOperator |
Represents an operation upon two operands of the same type, producing a result of the same type as the operands. |
BiPredicate<T,U> | Represents a predicate (boolean-valued function) of two arguments. |
BooleanSupplier | Represents a supplier of boolean -valued results. |
Consumer |
Represents an operation that accepts a single input argument and returns no result. |
DoubleBinaryOperator | Represents an operation upon two double -valued operands and producing a double -valued result. |
DoubleConsumer | Represents an operation that accepts a single double -valued argument and returns no result. |
DoubleFunction |
Represents a function that accepts a double-valued argument and produces a result. |
DoublePredicate | Represents a predicate (boolean-valued function) of one double -valued argument. |
DoubleSupplier | Represents a supplier of double -valued results. |
DoubleToIntFunction | Represents a function that accepts a double-valued argument and produces an int-valued result. |
DoubleToLongFunction | Represents a function that accepts a double-valued argument and produces a long-valued result. |
DoubleUnaryOperator | Represents an operation on a single double -valued operand that produces a double -valued result. |
Function<T,R> | Represents a function that accepts one argument and produces a result. |
IntBinaryOperator | Represents an operation upon two int -valued operands and producing an int -valued result. |
IntConsumer | Represents an operation that accepts a single int -valued argument and returns no result. |
IntFunction |
Represents a function that accepts an int-valued argument and produces a result. |
IntPredicate | Represents a predicate (boolean-valued function) of one int -valued argument. |
IntSupplier | Represents a supplier of int -valued results. |
IntToDoubleFunction | Represents a function that accepts an int-valued argument and produces a double-valued result. |
IntToLongFunction | Represents a function that accepts an int-valued argument and produces a long-valued result. |
IntUnaryOperator | Represents an operation on a single int -valued operand that produces an int -valued result. |
LongBinaryOperator | Represents an operation upon two long -valued operands and producing a long -valued result. |
LongConsumer | Represents an operation that accepts a single long -valued argument and returns no result. |
LongFunction |
Represents a function that accepts a long-valued argument and produces a result. |
LongPredicate | Represents a predicate (boolean-valued function) of one long -valued argument. |
LongSupplier | Represents a supplier of long -valued results. |
LongToDoubleFunction | Represents a function that accepts a long-valued argument and produces a double-valued result. |
LongToIntFunction | Represents a function that accepts a long-valued argument and produces an int-valued result. |
LongUnaryOperator | Represents an operation on a single long -valued operand that produces a long -valued result. |
ObjDoubleConsumer |
Represents an operation that accepts an object-valued and a double -valued argument, and returns no result. |
ObjIntConsumer |
Represents an operation that accepts an object-valued and a int -valued argument, and returns no result. |
ObjLongConsumer |
Represents an operation that accepts an object-valued and a long -valued argument, and returns no result. |
Predicate |
Represents a predicate (boolean-valued function) of one argument. |
Supplier |
Represents a supplier of results. |
ToDoubleBiFunction<T,U> | Represents a function that accepts two arguments and produces a double-valued result. |
ToDoubleFunction |
Represents a function that produces a double-valued result. |
ToIntBiFunction<T,U> | Represents a function that accepts two arguments and produces an int-valued result. |
ToIntFunction |
Represents a function that produces an int-valued result. |
ToLongBiFunction<T,U> | Represents a function that accepts two arguments and produces a long-valued result. |
ToLongFunction |
Represents a function that produces a long-valued result. |
UnaryOperator |
Represents an operation on a single operand that produces a result of the same type as its operand. |