java8 BiFunction接口

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

这篇文章是对BiFunction函数式接口的学习总结。这里提醒一点,可以看出该接口中有方法的实现,不单单只有抽象方法,在java8中,有一个新的改进就是在现有的接口中增加了一些默认的方法实现,使用default关键字来修饰。这种做法不会影响以前代码对接口的实现,也对原有的接口进行了扩展。
传递行为给方法,而不是传递值

/**
 * BiFunction是一个函数式接口,它接口两个参数并产生一个结果值返回。
 * 它里面有一个apply(Object,Object)方法。
 * @param <T> 函数的第一个参数类型
 * @param <U> 函数的第二个参数类型
 * @param <R> 函数的结果类型
 * @since 1.8
 */
@FunctionalInterface
public interface BiFunction<T, U, R> {

    /**
     * 将apply函数应用到给定的参数上面
     *
     * @param t 函数的第一个参数
     * @param u 函数的第二个参数
     * @return R 函数的结果
     */
    R apply(T t, U u);

    /**
     * 返回一个组合的函数,第一次是将该函数应用到它的输入,接着是将该函数的after应用到
     * 之前的结果上。如果在任一函数评测期间抛出异常,它都会被传递给组合函数的调用者。
     * @param <V> 组合函数和after函数的输出类型
     * @param after 该函数应用将被在当前函数apply后被apply
     * @return 返回一个组合函数,第一次应用该函数,接着应用after函数
     * @throws 当after为null的时候,会抛出NullPointerException异常。
     */
    default <V> BiFunction<T, U, V> andThen(Function<? super R, ? extends V> after) {
        Objects.requireNonNull(after);
        return (T t, U u) -> after.apply(apply(t, u));
    }
}
package com.java8.learn;

import java.util.function.BiFunction;
import java.util.function.Function;

/**
 *@author:liyongyong
 *@description: BiFunction接口学习
 *@date 2019/1/21
 */
public class BiFunctionTest {
    public static void main(String[] args){
        BiFunctionTest test = new BiFunctionTest();
        //实现四则运算
        System.out.println(test.compute(4,2,(value1,value2)->value1+value2));
        System.out.println(test.compute(4,2,(v1,v2)->v1-v2));
        System.out.println(test.compute(1,2,(v1,v2)->v1*v2));
        System.out.println(test.compute(3,2,(v1,v2)->v1/v2));
        System.out.println(test.calcute(3,4,(v1,v2)->v1+v2,v->v * v));
    }

    public  int compute(int num1, int num2, BiFunction<Integer,Integer,Integer> biFunction){
        return  biFunction.apply(num1,num2);
    }

    public int calcute(int num1, int num2, BiFunction<Integer,Integer,Integer> biFunction, Function<Integer,Integer> function){
        //调用addThen首先对接收的两个参数进行bifunction的apply,然后在进行function的apply
        return biFunction.andThen(function).apply(num1,num2);
    }
}

输出结果

6
2
2
1
49

在这里插入图片描述

javaBiFunction类和Function类的区别和联系? 阅读详情

相关推荐

Java 扩展函数式接口详解:BiFunction、BinaryOperator 与原生接口实战

本篇文章将会讲四大核心接口的升级版—— 常用扩展函数式接口。这些接口都是基于四大核心接口延伸而来,完全贴合生产场景,高频使用且实用性极强,学会它们,就能彻底搞定Java函数式接口的所有常用场景,不用再重复自定义接口

y245166349的专栏 604

BiFunction介绍

BiFunction接受两个任意类型参数并返回一个任意类型对象 @FunctionalInterface public interface BiFunction<T, U, R> { R apply(T t, U u); } BiFunction 与Function连用 private void bifunction() { BiFunction<Integer,Integer,Double> biFunction = (a,b)->Math.po

u013672585的博客 8111

Unity中基于SkinMeshRenderer的骨骼动画换装系统优化实践

本文深入探讨了Unity中基于SkinnedMeshRenderer的骨骼动画换装系统优化实践。针对换装卡顿、显示错误等常见问题,文章剖析了SkinnedMeshRenderer的核心数据原理,对比了“数据替换”与“实体替换”两种主流方案的性能差异,并详细阐述了通过骨骼字典缓存、对象池管理、材质合并与Draw Call优化等实战技巧,构建高性能、高稳定性的生产级换装系统。

weixin_29008055的博客 296

Java中的BiFunction

Java中的BiFunction介绍addThen(after)通俗解释BiFunction + 构造函数 介绍 BiFunction是一个函数式接口,表示一个接受两个输入值并返回一个输入值的运算符 @FunctionalInterface public interface BiFunction<T, U, R> { /** * Applies this function to the given arguments. * * @param t the

菜根檀的博客 6835

BiFunction

具体来说,BiFunction接口中有一个apply方法,该方法接受两个参数并返回一个结果。由于该接口函数式接口,因此可以使用Lambda表达式或方法引用来创建BiFunction对象,从而实现功能模块化、代码简洁等好处。创建一个 BiFunction 接口类型的对象 adder,该对象可以接收两个Integer类型的参数,并返回一个Integer类型的结果。在Java中,BiFunction是一种函数式接口,它表示一个可以接受两个参数并返回一个结果的函数。

weixin_41812346的博客 2735

Java8】 Function 与BiFunction 接口

简单介绍Java8的新特性,Function和BiFunction

SchopenhauerZhang的博客 1146

java8中的lambda接口Consumer,Function,BiConsumer,BiFunction

简介 在java8中新增lambda表达式,平时我们用的也比较多,主要用于替代匿名内部类,使代码更加的优雅简洁。最近在看spring源码时,发现内部用到的也非常多。虽然我们大部分用的都是stream,但是其中也涉及到非常多的函数式接口,比如Consumer,Function,BiConsumer,BiFunction等等。所以今天就梳理下java8中的一些函数式接口函数式接口 在说lambda之前,先解释下什么是函数式接口函数式接口指的是有且只有一个抽象方法。由于java8支持接口实现默认方法,

xby7437的博客 1852

JAVA8 Function<T,R> 和 BiFunction<T,U,R> 接口

Function是名字一般是一个函数接口,是JDK 1.8 新增加的函数式接口。 public interface Function<T, R> { /** * 将此函数应用于给定参数 * 真正执行函数接口的方法 */ R apply(T t); /** * 函数链,before执行的结果做根函数为参数 */ default <V> Function<V, R> compose.

xjj1314的专栏 2668

JAVA8 BiFunction接口用于解耦

先看源码 @FunctionalInterface public interface BiFunction<T, U, R> { /** * 输入两个参数, 类型分别是T和U, 返回一个结果, 类型为R * @param t 函数第一个输入参数 * @param u 第二个输入参数 * @return 返回结果 */ R apply(T t, U u); /** * 传入一个Function类型,该Fun

qq_57756904的博客 1121

Java 8 BiFunction示例

Java 8中, BiFunction是功能接口; 它接受两个参数并返回一个对象。 BiFunction.java @FunctionalInterface public interface BiFunction<T, U, R> { R apply(T t, U u); } T –函数的第一个参数的类型。 U –函数第二个参数的类型。 R –...

一名可爱的技术搬运工 3769

java8】持续精进-之BiFunction

如果你正在浏览Java8的API,你会发现java.util.function中 Function, Supplier, Consumer, Predicate和其他函数式接口广泛用在支持lambda表达式的API中。这些接口有一个抽象方法,会被lambda表达式的定义所覆盖。@FunctionalInterface public interface BiFunction<T, U, R> {

lh92的专栏 7848

java8学习之Function与BiFunction函数式接口详解

Function接口: 上次中已经使用了Function的apply()方法,但是在这个接口中还存在三个具体实现的方法,如下: 下面来仔细的将剩下的方法学习一下: compose(): 首先来读一下该方法的javadoc的描述: 一路读下来貌似还是有点懵,感觉好绕,下面再来看一下它的具体实现,这样可以就容易理解一些: 说白了,这个方法就是可以组合多个Function,由于该函数最...

webor2006的博客 209

java 8 之函数编程BiFunction

文章对java 8 BiFunction接口使用及源码做解释,在java 8 后interface 支持方法体,但是需要用default 修饰 我们先来看下源码 import java.util.Objects; /** * Represents a function that accepts two arguments and produces a result. * This is the two-arity specialization of {@link Function}. * *

weixin_43829047的博客 2694

Java8之Function函数(包括BiFunction

众所周知,Java8提供了一下非常重要的函数式接口。今天我们就来讲讲其中一个函数式接口-----Function接口。 下面的代码就是Function接口的全部代码。接下来我们逐个分析一下。 @FunctionalInterface public interface Function<T, R> @FunctionalInterface 表明该接口是一个函数式接口 <T, ...

嗯嗯嗯的博客 1931

javaBiFunction和Function详解

关于Lambda详见lambda描述。关于函数式接口详见函数式接口 首先我们来看一下BiFunction类,代码如下: package java.util.function; import java.util.Objects; /**  * Represents a function that accepts two arguments and produces a result.  * ...

weixin_39935887的博客 9570

function函数 java_java8学习之Function与BiFunction函数式接口详解

Function接口:上次中已经使用了Function的apply()方法,但是在这个接口中还存在三个具体实现的方法,如下:下面来仔细的将剩下的方法学习一下:compose():首先来读一下该方法的javadoc的描述:一路读下来貌似还是有点懵,感觉好绕,下面再来看一下它的具体实现,这样可以就容易理解一些:说白了,这个方法就是可以组合多个Function,由于该函数最终还是返回的Function,...

weixin_32348697的博客 475

Java8之Function函数、BiFunction函数详解

它也是一个函数式接口,它是Function 的 另一种形式,它接收两个参数(T,U),返回一个参数(R)。那么接下来我们看看这个接口里面有哪些方法吧。

qq_43842093的博客 9656
上一篇: Java8 函数式接口Predicate学习
下一篇: java8 BinaryOperator函数式接口
墨笙弘一
墨笙弘一 优质创作者: Java技术领域 优质创作者: Java技术领域
博客等级 码龄13年 7万+粉丝 498原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值