В Java 8 Унарный оператор является функциональным интерфейсом и расширяет Функция
.
Унарный оператор
принимает один аргумент и возвращает результат того же типа своих аргументов.
@FunctionalInterface public interface UnaryOperatorextends Function { }
Функция
принимает один аргумент любого типа и возвращает результат любого типа.
@FunctionalInterface public interface Function{ R apply(T t); }
Читать далее Примеры функций Java 8
1. Унарный оператор
1.1 В этом примере Функция <Целое число, целое число>
, которая принимает и возвращает один и тот же тип, может быть заменена на UnaryOperator<Целое число>
.
package com.mkyong; import java.util.function.Function; import java.util.function.UnaryOperator; public class Java8UnaryOperator1 { public static void main(String[] args) { Functionfunc = x -> x * 2; Integer result = func.apply(2); System.out.println(result); // 4 UnaryOperator func2 = x -> x * 2; Integer result2 = func2.apply(2); System.out.println(result2); // 4 } }
Выход
4 4
2. Унарный оператор в качестве аргумента
package com.mkyong; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.function.UnaryOperator; public class Java8UnaryOperator2 { public static void main(String[] args) { Listlist = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); List result = math(list, x -> x * 2); System.out.println(result); // [2, 4, 6, 8, 10, 12, 14, 16, 18, 20] } public static List math(List list, UnaryOperator uo) { List result = new ArrayList<>(); for (T t : list) { result.add(uo.apply(t)); } return result; } }
Выход
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
3. Цепной Унарный оператор
package com.mkyong; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.function.UnaryOperator; public class Java8UnaryOperator3 { public static void main(String[] args) { Listlist = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); List result = math(list, x -> x * 2, x -> x + 1); System.out.println(result); // [3, 5, 7, 9, 11, 13, 15, 17, 19, 21] } public static List math(List list, UnaryOperator uo, UnaryOperator uo2) { List result = new ArrayList<>(); for (T t : list) { result.add(uo.andThen(uo2).apply(t)); } return result; } }
Выход
[3, 5, 7, 9, 11, 13, 15, 17, 19, 21]
Рекомендации
- Унарный оператор JavaDoc
- Функция JavaDoc
- Примеры функций Java 8
- Java 8 Учебные пособия
Оригинал: “https://mkyong.com/java8/java-8-unaryoperator-examples/”