亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> java

Java 8 函数式接口大全:java.util.function 包 43 个核心接口

函数式接口分类体系

Java 8 在 java.util.function 定义 43 个标准函数式接口,覆盖 1/2 参数、引用/原语类型、消费/供给/变换/判断/组合等场景。

核心接口速查表

分类接口抽象方法语义
消费型Consumervoid accept(T t)消费单值,无返回
BiConsumervoid accept(T t, U u)消费两值
IntConsumervoid accept(int value)消费 int
LongConsumer / DoubleConsumer...消费 long/double
供给型SupplierT get()供给单值
BooleanSupplierboolean getAsBoolean()供给 boolean
IntSupplierint getAsInt()供给 int
LongSupplier / DoubleSupplier...供给 long/double
函数型FunctionR apply(T t)一元变换
BiFunctionR apply(T t, U u)二元变换
UnaryOperatorT apply(T t)一元同类型变换
BinaryOperatorT apply(T t1, T t2)二元同类型变换
判断型Predicateboolean test(T t)一元判断
BiPredicateboolean test(T t, U u)二元判断
IntPredicate / LongPredicate / DoublePredicate...原语判断

原语特化接口(避免装箱开销)

命名规律:ToIntFunction、IntFunction、IntUnaryOperator、IntBinaryOperator、IntPredicate、IntConsumer、IntSupplier 等,覆盖 int/long/double 双向转换与运算。

组合与默认方法

核心接口提供默认方法支持组合:

Predicate 实战示例

import java.util.*;
import java.util.function.Predicate;

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

        // 1. 全真谓词
        System.out.println("Print all:");
        eval(list, n -> true);

        // 2. 偶数判断
        System.out.println("Print even:");
        eval(list, n -> n % 2 == 0);

        // 3. 组合谓词:大于 3 且为偶数
        System.out.println("Print >3 and even:");
        eval(list, n -> n > 3 && n % 2 == 0);
        // 或使用组合默认方法
        eval(list, n -> n > 3); // 需组合写法:Predicate p = n -> n > 3; eval(list, p.and(n -> n%2==0));
    }

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

输出:

Print all: 1 2 3 4 5 6 7 8 9
Print even: 2 4 6 8
Print >3 and even: 4 6 8

自定义函数式接口

@FunctionalInterface
interface TriFunction {
    R apply(T t, U u, V v);
}

// 使用
TriFunction sum3 = (a,b,c) -> a+b+c;
System.out.println(sum3.apply(1,2,3)); // 6

java

  1. 精通 Java 运算符:类型、语法与实战示例
  2. Java 注释:类型、用法与最佳实践
  3. 精通 Java 增强 for 循环:语法、示例与最佳实践
  4. 精通 Java 字符串:创建、方法与最佳实践
  5. 精通 Java 接口:概念、实现与最佳实践
  6. 精通 Java 匿名内部类:定义、语法与实战示例
  7. 精通 Java Try-With-Resources:自动资源管理详解
  8. Java 注解详解:类型、放置位置与实战示例
  9. Java 断言实战指南:尽早发现 Bug 与保障代码可靠性
  10. 深入理解 Java Vector:用法、特性及与 ArrayList 的对比
  11. Java 接口全解析:定义契约、默认方法、多实现与标记接口
  12. Java 8 函数式接口大全:java.util.function 包 43 个核心接口