supplier、function、bifunction区别
在 java 中,supplier、function、bifunction 是 java.util.function 包下的三个核心函数式接口,它们的主要区别在于参数数量和返回值类型:
1、supplier
- 功能:不接受参数,仅返回一个值(供应一个结果)。
- 抽象方法:t get()
- 适用场景:延迟计算、生成数据、工厂模式等。
示例:
import java.util.function.supplier;
public class supplierexample {
public static void main(string[] args) {
// 供应一个随机数
supplier<integer> randomsupplier = () -> (int) (math.random() * 100);
system.out.println(randomsupplier.get()); // 每次调用可能返回不同的值
}
}
2、function<t, r>
- 功能:接受一个参数(类型 t),返回一个结果(类型 r)。
- 抽象方法:r apply(t t)
- 适用场景:数据转换、映射操作等。
示例:
import java.util.function.function;
public class functionexample {
public static void main(string[] args) {
// 将字符串转换为其长度
function<string, integer> lengthfunction = s -> s.length();
system.out.println(lengthfunction.apply("hello")); // 输出:5
}
}
3、bifunction<t, u, r>
- 功能:接受两个参数(类型 t 和 u),返回一个结果(类型 r)。
- 抽象方法:r apply(t t, u u)
- 适用场景:需要处理两个输入的计算,如合并数据、比较等。
示例:
import java.util.function.bifunction;
public class bifunctionexample {
public static void main(string[] args) {
// 计算两个整数的和
bifunction<integer, integer, integer> sumfunction = (a, b) -> a + b;
system.out.println(sumfunction.apply(3, 5)); // 输出:8
}
}
核心区别总结
| 接口 | 参数数量 | 返回值 | 抽象方法签名 |
|---|---|---|---|
| supplier | 0 | t | t get() |
| function<t,r> | 1 (t) | r | r apply(t t) |
| bifunction<t,u,r> | 2 (t, u) | r | r apply(t t, u u) |
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论