Dernière modification : 24/08/2022

UnaryOperator - Java 8

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);
}

1. Function vs UnaryOperator

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

2. UnaryOperator en argument

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;
}

3. Chaînage d'UnaryOperator

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