Le UnaryOperator est une interface fonctionnelle ayant un seul argument T en entrée et retourne un objet de type T. Sa définition est la suivante :
@FunctionalInterface
public interface UnaryOperator<T> extends Function<T, T> {
}
Cette interface fonctionnelle étend l'interface function :
@FunctionalInterface
public interface Function<T, R> {
R apply(T t);
}
Dans cet exemple, nous allons voir que Function<Integer, Integer> peut être remplacé par UnaryOperator<Integer> :
final Function<Integer, Integer> func = x -> x + 4;
final Integer result = func.apply(2);
System.out.println(result); // 6
final UnaryOperator<Integer> func2 = x -> x + 4;
final Integer result2 = func2.apply(2);
System.out.println(result2); // 6
public static void main(final String[] args) {
final List<String> list = Arrays.asList("Alex", "Claire", "Angel");
final List<String> result = UnaryOperatorTest.utilisateur(list, x -> "Utilisateur :" + x);
System.out.println(result); // [Utilisateur :Alex, Utilisateur :Claire, Utilisateur :Angel]
}
public static <T> List<T> utilisateur(final List<T> list, final UnaryOperator<T> uo) {
final List<T> result = new ArrayList<>();
list.forEach(x -> result.add(uo.apply(x)));
return result;
}
public static void main(final String[] args) {
final List<String> list = Arrays.asList("Alex", "Claire", "Angel");
final List<String> result = UnaryOperatorTest.utilisateur(list, x -> "[Utilisateur :" + x, x -> x + "]");
System.out.println(result); // [[Utilisateur :Alex], [Utilisateur :Claire], [Utilisateur :Angel]]
}
public static <T> List<T> utilisateur(final List<T> list, final UnaryOperator<T> uo, final UnaryOperator<T> uo2) {
final List<T> result = new ArrayList<>();
list.forEach(x -> result.add(uo.andThen(uo2).apply(x)));
return result;
}
LauLem.com - Conditions Générales d'Utilisation - Informations Légales - Charte relative aux cookies - Charte sur la protection des données personnelles - A propos