РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
524 of 1163 menu

Класс UnaryOperator

Класс UnaryOperator - это функциональный интерфейс из пакета java.util.function, который наследуется от Function и представляет собой операцию над одним операндом, возвращающую результат того же типа, что и входной аргумент. В первый параметр метода apply мы передаем значение, которое нужно преобразовать, а метод возвращает преобразованное значение того же типа. Класс часто используется в Stream API для замены элементов потока, например в методе Stream.replaceAll или при обработке элементов списка через List.replaceAll.

Синтаксис

@FunctionalInterface public interface UnaryOperator<T> extends Function<T, T> { T apply(T t); }

Так как UnaryOperator является функциональным интерфейсом, его можно реализовать с помощью лямбда-выражения или ссылки на метод.

Пример

Давайте создадим простой UnaryOperator, который удваивает число:

import java.util.function.UnaryOperator; public class Main { public static void main(String[] args) { UnaryOperator<Integer> doubleValue = x -> x * 2; int res = doubleValue.apply(5); System.out.println(res); } }

Результат выполнения кода:

10

Пример

Давайте применим UnaryOperator к каждому элементу списка с помощью метода replaceAll:

import java.util.List; import java.util.ArrayList; import java.util.function.UnaryOperator; public class Main { public static void main(String[] args) { List<Integer> list = new ArrayList<>(List.of(1, 2, 3, 4, 5)); UnaryOperator<Integer> square = x -> x * x; list.replaceAll(square); System.out.println(list); } }

Результат выполнения кода:

[1, 4, 9, 16, 25]

Пример

Давайте используем UnaryOperator вместе со Stream API для преобразования каждого элемента потока:

import java.util.List; import java.util.function.UnaryOperator; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { UnaryOperator<String> toUpperCase = s -> s.toUpperCase(); List<String> res = List.of("abcde", "12345") .stream() .map(toUpperCase) .collect(Collectors.toList()); System.out.println(res); } }

Результат выполнения кода:

[ABCDE, 12345]

Смотрите также

  • класс Stream,
    который представляет поток элементов
  • класс Function,
    родительский интерфейс для UnaryOperator
  • класс BinaryOperator,
    который принимает два аргумента одного типа
  • метод map,
    который преобразует элементы потока
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить