import java.util.Comparator;
import java.util.function.BiFunction;
import java.util.function.BinaryOperator;
import java.util.function.Function;
/**
* {@link <a href=
* "https://[Log in to view URL]"
* target= "_blank"></a>}
*
* @author itammb ( Italia Massimiliano Buscati )
* @version JDK 1.15
*
*/
class Main {
private static class UniTest {
/**
* @see BiFunction#apply(Object, Object)
* @see BiFunction#andThen(Function)
*/
public void biFunction_filter(int a, int b) {
// logica - sintesi
BiFunction<Integer, Integer, Integer> sum = (x1, x2) -> x1 + x2;
// logica - filtro - soluzione parziale
Function<Integer, Integer> filter = (Integer i) -> {
return i * 2;
};
System.out.println(sum.andThen(filter).apply(a, b));
}
/**
* @see BinaryOperator#apply(Object, Object)
* @see BiFunction#andThen(Function)
*/
public void binaryOperator_apply(int a, int b) {
// logica - sintesi
BinaryOperator<Integer> func3 = (x1, x2) -> x1 + x2;
System.out.println(func3.apply(a, b));
}
/**
* @see BinaryOperator#maxBy(Comparator)
* {link Comparator}
*/
public void binaryOperator_maxBy(int x, int y) {
// Comparator
Comparator<Integer> cmp = Integer::compare;
// Returns:
// 0 se x == y
// -1 se x < y
// +1 se x > y
System.out.println(cmp.compare(x, y));
BinaryOperator<Integer> maxBinaryOperator = BinaryOperator.maxBy(cmp);
System.out.println(maxBinaryOperator.apply(x, y));
}
public void binaryOperator_maxBy_labda(int x, int y) {
Comparator<Integer> cmp = (Integer o1, Integer o2) -> o1.compareTo(o2);
BinaryOperator<Integer> maxBinaryOperator = BinaryOperator.maxBy(cmp);
System.out.println(maxBinaryOperator.apply(x, y));
}
}
public static void main(String args[]) {
// Unit test - sintesi di una logica con risultato dello stesso tipo
new UniTest().binaryOperator_apply(2, 3);
// Unit test - la soluzione parziale viene elaborata seguendo il codice
// specifico da destra verso sinistra
new UniTest().biFunction_filter(2, 3);
// Unit test - la sintesi di una logica viene comparata
new UniTest().binaryOperator_maxBy(2, 3);
// Unit test - la sintesi di una logica viene comparata (uso di labda expression)
new UniTest().binaryOperator_maxBy_labda(2, 3);
}
}
To embed this project on your website, copy the following code and paste it into your website's HTML: