首页 > 编程语言 >函数式编程

函数式编程

时间:2023-03-16 14:46:02浏览次数:40  
标签:Predicate 函数 编程 接口 参数 类型 public

Lambda表达式

基本语法:(parameters) -> { expression or statements }

示例:

// 无参数
new Thread(() -> System.out.println(Thread.currentThread().getName())).start();

// 一个参数
Arrays.asList(1, 2, 3).forEach(x -> System.out.println(x));

// 多个参数
String[] arr = {"b", "d", "z"};
Arrays.sort(arr, (o1, o2) -> o1.compareToIgnoreCase(o2));
System.out.println(Arrays.toString(arr));

函数式接口

函数式接口也是接口,但只能有一个抽象方法,使用@FunctionalInterface注解标注

@FunctionalInterface
public interface Consumer<T> {
    void accept(T t);
}

@FunctionalInterface
public interface Runnable {
    // public abstract在接口中可省略
    public abstract void run();
}

预定义函数式接口

java.util.function包预定义了一组完整的目标接口,基本命名准则为:

  1. 如果只处理对象而非基本类型,名称则为 Function,Consumer,Predicate 等。
  2. 如果接收的参数是基本类型,则由名称的第一部分表示,如 LongConsumer,DoubleFunction,IntPredicate 等,但返回基本类型的 Supplier 接口例外。
  3. 如果返回值为基本类型,则用 To 表示,如 ToLongFunction <T> 和 IntToLongFunction
  4. 如果返回值类型与参数类型相同,则是一个 Operator :单个参数使用 UnaryOperator,两个参数使用 BinaryOperator。
  5. 如果接收参数并返回一个布尔值,则是一个 谓词 (Predicate)。
  6. 如果接收的两个参数类型不同,则名称中有一个 Bi。
函数接口 方法定义 特征
Predicate boolean test(T t) 测试输入是否满足条件
Function<T, R> R apply(T t) 输入类型T,输出类型R
Consumer void accept(T t) 消费者,无返回值
Supplier T get() 无参,返回任意类型

方法引用

类名或对象名::方法名,类名::new

标签:Predicate,函数,编程,接口,参数,类型,public
From: https://www.cnblogs.com/dylmys/p/17222514.html

相关文章