Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> java

Java 8 Functional Interfaces: полное руководство (java.util.function)

Функциональные интерфейсы — интерфейсы с единственным абстрактным методом (SAM). Java 8 определила множество таких интерфейсов в пакете java.util.function для использования в лямбдах.

Таблица функциональных интерфейсов

№Интерфейс и описание
1BiConsumer<T,U> — операция с двумя входами, без результата.
2BiFunction<T,U,R> — функция двух аргументов с результатом.
3BinaryOperator<T> — операция над двумя операндами типа T, результат T.
4BiPredicate<T,U> — предикат двух аргументов.
5BooleanSupplier — поставщик boolean.
6Consumer<T> — операция с одним входом, без результата.
7DoubleBinaryOperator — операция над двумя double, результат double.
8DoubleConsumer — операция с одним double, без результата.
9DoubleFunction<R> — функция double -> R.
10DoublePredicate — предикат одного double.
11DoubleSupplier — поставщик double.
12DoubleToIntFunction — double -> int.
13DoubleToLongFunction — double -> long.
14DoubleUnaryOperator — унарный оператор double -> double.
15Function<T,R> — функция T -> R.
16IntBinaryOperator — (int, int) -> int.
17IntConsumer — int -> void.
18IntFunction<R> — int -> R.
19IntPredicate — int -> boolean.
20IntSupplier — поставщик int.
21IntToDoubleFunction — int -> double.
22IntToLongFunction — int -> long.
23IntUnaryOperator — int -> int.
24LongBinaryOperator — (long, long) -> long.
25LongConsumer — long -> void.
26LongFunction<R> — long -> R.
27LongPredicate — long -> boolean.
28LongSupplier — поставщик long.
29LongToDoubleFunction — long -> double.
30LongToIntFunction — long -> int.
31LongUnaryOperator — long -> long.
32ObjDoubleConsumer<T> — (T, double) -> void.
33ObjIntConsumer<T> — (T, int) -> void.
34ObjLongConsumer<T> — (T, long) -> void.
35Predicate<T> — T -> boolean.
36Supplier<T> — поставщик T.
37ToDoubleBiFunction<T,U> — (T,U) -> double.
38ToDoubleFunction<T> — T -> double.
39ToIntBiFunction<T,U> — (T,U) -> int.
40ToIntFunction<T> — T -> int.
41ToLongBiFunction<T,U> — (T,U) -> long.
42ToLongFunction<T> — T -> long.
43UnaryOperator<T> — T -> T.

Пример: Predicate<T>

import java.util.Arrays;
import java.util.List;
import java.util.function.Predicate;

public class Java8Tester {
    public static void main(String[] args) {
        List<Integer> list = Arrays.asList(1,2,3,4,5,6,7,8,9);

        System.out.println("Print all numbers:");
        eval(list, n -> true);

        System.out.println("Print even numbers:");
        eval(list, n -> n % 2 == 0);

        System.out.println("Print numbers > 3:");
        eval(list, n -> n > 3);
    }

    public static void eval(List<Integer> list, Predicate<Integer> predicate) {
        for (Integer n : list) {
            if (predicate.test(n)) System.out.println(n + " ");
        }
    }
}

Вывод

Print all numbers: 1 2 3 4 5 6 7 8 9
Print even numbers: 2 4 6 8
Print numbers greater than 3: 4 5 6 7 8 9

Predicate<T> — классический пример функционального интерфейса с методом test(T).

java

  1. Освоение операторов Java: типы, синтаксис и практические примеры
  2. Комментарии в Java: типы, использование и лучшие практики
  3. Освоение улучшенного цикла for в Java: синтаксис, примеры и лучшие практики
  4. Освоение строк в Java: создание, методы и лучшие практики
  5. Интерфейсы в Java: концепции, реализация и лучшие практики
  6. Анонимные внутренние классы в Java: определение, синтаксис и практические примеры
  7. Try-with-resources в Java: автоматическое управление ресурсами
  8. Аннотации в Java: типы, размещение и практические примеры
  9. Assertions в Java: практическое руководство по обнаружению багов и обеспечению надежности кода
  10. Понимание Java Vector: использование, особенности и сравнение с ArrayList