5.2.
BiPredicate Functional Interfaces
BiPredicate Functional Interface
o Takes Two Input Parameters
o Returns Boolean after processing.
BiPredicate Functional Interface has the following methods.
abstract boolean test(T, U);
BiPredicate<T, U> and(BiPredicate<? super T, ? super U>);
BiPredicate<T, U> negate();
BiPredicate<T, U> or(BiPredicate<? super T, ? super U>);
Demo8: Files Required:
1. [Link]
[Link]
package [Link];
import [Link];
/*
* @Author : Srinivas Dande
* @Company: Java Learning Center
* */
public class Demo8 {
public static void main(String[] args) {
BiPredicate<Integer,Integer> predicate1 = (num1,num2) -> num1>num2;
boolean mybool = [Link](10,20);
[Link](mybool);
BiPredicate<Integer,Integer> predicate2 = (num1,num2) -> num1<num2;
mybool = [Link](10,20);
[Link](mybool);
}
}
Java Learning Center 52 Java 8 New Features
5.3. Function Functional Interfaces
Function Functional Interface
o Takes One Input Parameter
o Returns Output after processing.
Function Functional Interface has the following methods.
abstract R apply(T); //SAM
static <T> Function<T, T> identity();
<V> Function<V, R> compose(Function<? super V, ? extends T>);
<V> Function<T, V> andThen(Function<? super R, ? extends V>);
Demo9: Files Required:
1. [Link]
[Link]
package [Link];
import [Link];
/*
* @Author : Srinivas Dande
* @Company: Java Learning Center
* */
public class Demo9 {
public static void main(String[] args) {
Function<String, String> fun1 = (input) -> [Link]();
String output1 = [Link]("Srinivas Dande");
[Link](output1);
Function<String, Integer> fun2 = (input) -> [Link](input);
Integer output2 = [Link]("99");
[Link](output2);
Function<Integer, String> fun3 = (input) -> [Link](input);
String output3 = [Link](99);
[Link](output3);
Java Learning Center 53 Java 8 New Features
Function<String, String> fun4 = input -> input;
String output4= [Link]("Hello Guys");
[Link](output4);
Function<String, String> fun5 = [Link]();
String output5= [Link]("Hello Guys");
[Link](output5);
}
}
Demo10: Files Required:
1. [Link]
[Link]
package [Link];
import [Link];
/*
* @Author : Srinivas Dande
* @Company: Java Learning Center
* */
public class Demo10 {
public static void main(String[] args) {
Function<Integer, Integer> fun1 = (num) -> {
[Link]("Multiply by 2");
return num * 2;
};
Function<Integer, Integer> fun2 = (num) -> {
[Link]("Multiply by 3");
return num * 3;
};
[Link]([Link](5));
[Link]([Link](5));
int result2= [Link](fun2).apply(10);
//[Link](10) => 10 * 2 => 20
//[Link](20) => 3 * 20 => 60
[Link](result2); //60
Java Learning Center 54 Java 8 New Features
int result1= [Link](fun2).apply(10);
//[Link](10) => 10 * 3 => 30
//[Link](30) =>30 * 2 => 60
[Link](result1); //60
}
}
Demo11: Files Required:
1. [Link]
[Link]
package [Link].demo1;
import [Link];
/*
* @Author : Srinivas Dande
* @Company: Java Learning Center
* */
public class Demo11 {
public static void main(String[] args) {
Function<String, Integer> fun1 = (input) -> {
[Link]("Converting String to Integer");
return [Link](input);
};
Function<Integer, Integer> fun2 = (num) -> {
[Link]("add 10 to the number");
return num + 10;
};
int result2= [Link](fun2).apply("10");
[Link](result2); //20
int result1= [Link](fun1).apply("10");
[Link](result1); //20
}
}
Java Learning Center 55 Java 8 New Features
5.4. UnaryOperator Functional Interfaces
UnaryOperator Functional Interface is sub type of Function which allows you specify only
One Type for both parameter and Return Value.
UnaryOperator Functional Interface
o Takes One Input Parameter
o Returns Output after processing.
UnaryOperator Functional Interface has the following methods.
abstract R apply(T); //SAM
public static <T> UnaryOperator<T> identity();
<V> Function<V, R> compose(Function<? super V, ? extends T>);
<V> Function<T, V> andThen(Function<? super R, ? extends V>);
[Link]
package [Link];
import [Link];
import [Link];
/*
* @Author : Srinivas Dande
* @Company: Java Learning Center
* */
public class Demo12 {
public static void main(String[] args) {
Function<String,String> fun1 = (input) -> [Link]();
[Link]([Link]("Hello"));
UnaryOperator<String> unary1 = (input) -> [Link]();
[Link]([Link]("Hello"));
Function<Integer, Integer> fun2 = (num) -> num * 2;
[Link]([Link](50));
UnaryOperator<Integer> unary2 = (num) -> num * 2;
[Link]([Link](50));
}
}
Java Learning Center 56 Java 8 New Features
5.5. BiFunction Functional Interfaces
BiFunction Functional Interface
o Takes Two Input Parameters
o Returns Output after processing.
BiFunction Functional Interface has the following methods.
abstract R apply(T, U); //SAM
<V> BiFunction<T, U, V> andThen(Function<? super R, ? extends V>);
[Link]
package [Link];
import [Link];
/*
* @Author : Srinivas Dande
* @Company: Java Learning Center
* */
public class Demo13 {
public static void main(String[] args) {
BiFunction<String,String,String> fun1 = (input1,input2) -> input1 + input2;
String output = [Link]("Hello"," Guys");
[Link](output);
BiFunction<Integer, Integer,Integer> fun2 = (num1,num2) -> num1 * num2;
[Link]([Link](5,25));
BiFunction<Integer, Integer,String> fun3 = (num1,num2) -> {
int result= num1 * num2;
String str = "Result is "+result;
return str;
};
[Link]([Link](5,25));
}
}
Java Learning Center 57 Java 8 New Features
5.6. BinaryOperator Functional Interfaces
BinaryOperator Functional Interface is sub type of BiFunction which allows you specify
only One Type for both parameter and Return Value.
BinaryOperator Functional Interface
o Takes Two Input Parameters
o Returns Output after processing.
BinaryOperator Functional Interface has the following methods.
static <T> BinaryOperator<T> minBy(Comparator<? super T>);
static <T> BinaryOperator<T> maxBy(Comparator<? super T>);
[Link]
package [Link];
import [Link];
import [Link];
/*
* @Author : Srinivas Dande
* @Company: Java Learning Center
* */
public class Demo14 {
public static void main(String[] args) {
BiFunction<String,String,String> fun1 = (input1,input2) -> input1 + input2;
String output = [Link]("Hello"," Guys");
[Link](output);
BinaryOperator<String> binary1 = (input1,input2) -> input1 + input2;
String output1 = [Link]("Hello"," Guys");
[Link](output1);
BiFunction<Integer, Integer,Integer> fun2 = (num1,num2) -> num1 * num2;
[Link]([Link](5,25));
BinaryOperator<Integer> binary2 = (num1,num2) -> num1 * num2;
[Link]([Link](5,25));
}
}
Java Learning Center 58 Java 8 New Features
5.7. Consumer and BiConsumer Interfaces
Consumer Functional Interface
o Takes One Input Parameter
o No Return Value.
Consumer Functional Interface has the following methods.
abstract void accept(T); //SAM
Consumer<T> andThen(Consumer<? super T>);
BiConsumer Functional Interface
o Takes Two Input Parameters
o No Return Value.
BiConsumer Functional Interface has the following methods.
abstract void accept(T, U);
BiConsumer<T, U> andThen(BiConsumer<? super T, ? super U>);
[Link]
package [Link];
import [Link];
import [Link];
/*
* @Author : Srinivas Dande
* @Company: Java Learning Center
* */
public class Demo15 {
public static void main(String[] args) {
Consumer<String> consumer1 = (input) -> [Link]([Link]());
[Link]("Hello");
[Link]("Srinivas");
[Link]("Hai");
BiConsumer<String,String> consumer2 = (input1,input2) ->
[Link](input1+input2);
[Link]("Hello"," Guys");
}
}
Java Learning Center 59 Java 8 New Features
5.8. Supplier Functional Interfaces
Supplier Functional Interface
o Takes No Input Parameters
o Returns Any Type .
Supplier Functional Interface has the following methods.
abstract T get();
[Link]
package [Link];
import [Link];
import [Link];
import [Link];
/*
* @Author : Srinivas Dande
* @Company: Java Learning Center
* */
public class Demo16 {
public static void main(String[] args) {
Supplier<String> supplier1 = () -> "Hello Guys, How are you?";
String str = [Link]();
[Link](str);
Supplier<Integer> supplier2 = () -> [Link]().getDayOfMonth();
[Link]([Link]());
Supplier<DayOfWeek> supplier3 = () -> [Link]().getDayOfWeek();
DayOfWeek dow = [Link]();
[Link](dow);
[Link]([Link]());
}
}
Java Learning Center 60 Java 8 New Features