java自学网VIP

Java自学网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 16216|回复: 103

【Java源码】Java8函数式编程之Function github源码 java代码

  [复制链接]
  • TA的每日心情
    开心
    2021-5-25 00:00
  • 签到天数: 1917 天

    [LV.Master]出神入化

    2025

    主题

    3683

    帖子

    6万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    66089

    宣传达人突出贡献优秀版主荣誉管理论坛元老

    发表于 2019-8-6 01:10:52 | 显示全部楼层 |阅读模式
    《Java8函数式编程之Function》场景:可以应用在计算逻辑中 java代码4 I5 d6 w; l' w. p2 _

    $ V' w' M7 ]6 W4 z7 k: o" W6 s$ h部分java源码:
    : d3 c! |4 K, s, t6 v/ ?: U1、
    & v) L9 C1 N4 K1 Rpackage com.javazx.jdk8;5 o# P' _' u) U  t' t
    " G7 M2 E. N9 x
    import java.util.function.BiFunction;! O& p8 N4 U: O, |4 T
    import java.util.function.Function;
    8 h& Y: Z! t& M, w

    3 ~# F5 ^  X+ Q
    /**
    3 T2 u6 H8 {9 s8 |
    * @author: itmrchen
    & h1 P6 J  q; a2 B: d6 l1 d) k
    * @Description: Function中的compose和andThen两个方法的使用
    ; O- \) x& e7 h$ J9 o* i
    * 如果是两个参数一个输出则用BiFunction
    & l- R3 }$ n( n' R3 @
    * @date 2019/8/6 0:16
    1 y: ~  l5 |, m' e( A2 ]: X  ]& o( H
    */
    8 l. R, x' p* [3 _
    public class FunctionTest2 {
    5 K$ C9 Q, J# Y, m    public static void main(String[] args) {
    4 C2 N" u$ k) f4 b, X        FunctionTest2 functionTest = new FunctionTest2();
    . _0 m1 U) V  u4 e$ A  g
            System.out.println(functionTest.compute(2, value -> value * 3, value -> value * value));
      k& D# k- Q* H6 }: `  h2 b
            System.out.println(functionTest.compute2(2, value -> value - 3, value -> value * value));
    5 x( w! [$ @0 L
    9 n: D2 ]  x4 J  u. f, b: X: |
            System.out.println(functionTest.compute3(2, 3, (value1, value2) -> value1 + value2));6 T4 A; j, M* H9 u3 b
    ) V6 Z( d3 Z8 A2 }4 d* X
            System.out.println(functionTest.compute4(2, 3, (value1, value2) -> value1 + value2, value -> 2 * value));
    + d( j. \( ]/ e
    ) M5 J8 M( ~+ ?
        }# p6 J' x, D7 r, o! B

    # c+ K" ?/ l8 J; z  p- I# z3 Q    /**1 B5 ?6 I- m  d: v
         * 先计算function2 再将结果与function1运算, F/ M" g+ T' [3 v  s* @
         *
    & c( a2 o/ y6 v2 e8 s+ w
         * @param a: G0 K  F  \% X( V$ e& a# ]; C
         * @param function1- J5 s% D( k* _2 ~" y, I
         * @param function2
    ( l/ i& R  G) q* H' n, d6 H
         * @return  [- d4 x- X) Y& ?! [7 J& x  c. |
         */
    + q6 |, l( Z7 @2 {" _+ k9 V
        public int compute(int a, Function<Integer, Integer> function1, Function<Integer, Integer> function2) {
    ( i; Z' H. r8 }, N# A        return function1.compose(function2).apply(a);! _4 s* q8 A: O2 P/ U7 o3 I
        }
    " a9 c. d. j( L  ]9 G9 I4 }  P  F4 ~( O9 I  S
        /**# ?5 V2 a3 `  Y. _% Q- K
         * 先计算function1 再将结果与function2运算
      w/ i1 l: z3 \6 L% V5 D
         *' H. v$ [+ Y/ d
         * @param a/ `: P. o( E- b6 T7 ^3 o. d9 A8 y
         * @param function1
    ( ?7 g- w7 L/ [3 P
         * @param function2
    % C) I. A7 Q4 L# e! b: U' m
         * @return
    ; ]. C* E5 X7 K+ a5 G! u' W
         */
    7 ]* H1 Y: V  P$ B$ t5 j; Z
        public int compute2(int a, Function<Integer, Integer> function1, Function<Integer, Integer> function2) {
    3 W! K( i8 W( S! H' v        return function1.andThen(function2).apply(a);
    5 V0 F8 @4 p- a' L- ]
        }
    9 b& D* S7 [. ?
    , O% k5 B' `' j# R1 A$ F    /**
    ' A- d7 b0 D0 V: y
         * 具体操作由调用者决定9 d2 h9 z$ \0 i+ ~
         *
      U- b! u7 f$ b9 a$ u# E
         * @param a8 V  b% T) J7 _5 X  X) q
         * @param b
      _5 i  `" L6 D5 U" L+ t6 E$ \: `
         * @param function9 q0 r3 {. Y( F2 w9 W
         * @return! X9 s5 t' e; U' e. E# u# E2 k
         */* E: M8 ]0 J1 ~
        public int compute3(int a, int b, BiFunction<Integer, Integer, Integer> function) {& p6 [4 n: i& _1 V$ B7 ?; I4 P1 N
            return function.apply(a, b);3 p7 h2 c/ k. t; I4 c( N; V
        }( b3 u! {; L& _2 k9 ]; N
    0 R) s, {' h7 _1 d5 `- l
        /**  U  s" m% G: F' B5 a4 W% b
         * @param a
    # {/ T8 ?0 e0 k9 v/ ~2 [1 \
         * @param b. t, d* A6 I" K
         * @param biFunction
    6 {4 m; o. F, L5 ~* ^/ d
         * @param function
    , I+ E+ b  Y: y
         * @return8 L  d+ b3 M) B) D/ o+ r) M; L" L
         */
    ; ^: p1 N" t2 X# E$ ]% Q
        public int compute4(int a, int b, BiFunction<Integer, Integer, Integer> biFunction, Function<Integer, Integer> function) {$ q: h; O$ }, ], P! _* U; h- g
            return biFunction.andThen(function).apply(a, b);
    4 [- G, B( e0 R( M7 n9 C# T8 L
        }/ w  d2 f0 F; _! Q# E
    , ~' g1 Y8 v8 N5 Q& \# J

    7 O1 H' w3 z" K}. r, D" ^$ [0 B; |3 ?) ~' K# i
    , w. T* J. E3 m/ I4 J
    2 Q6 X! N" ]: w7 Z$ q; m

    # V) M, f, F/ x2 i
    * H6 H8 U$ @' q( e! D; C
    ; _/ D) r6 |( `; Ngithub地址:
    https://github.com/itmrchen/java8位置在 java8\src\main\java\com\javazx\jdk8\FunctionTest.java FunctionTest2.java
    0 ~  g) F0 n9 k% @7 ~5 d, F6 J! j, c- y" `" J% g5 b
    2 M& w7 X* ]5 ?) F  B" F0 U. p

    5 C/ {; b* i* `! b% Y( |$ i8 r: m: T( s' ?) R1 Y& o
    2 [5 Z% q" W0 Y, C, G  ~, o$ Y
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    3281

    帖子

    6566

    积分

    普通会员

    Rank: 2

    积分
    6566
    发表于 2019-12-24 19:03:52 | 显示全部楼层
    大佬  厉害呀
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    3252

    帖子

    6506

    积分

    普通会员

    Rank: 2

    积分
    6506
    发表于 2020-1-8 12:45:19 | 显示全部楼层
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    3226

    帖子

    6454

    积分

    普通会员

    Rank: 2

    积分
    6454
    发表于 2020-1-24 22:50:22 | 显示全部楼层
    学习学习再学习
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    3212

    帖子

    6426

    积分

    普通会员

    Rank: 2

    积分
    6426
    发表于 2020-2-6 12:19:26 | 显示全部楼层
    很完美的教程!!!!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    3299

    帖子

    6600

    积分

    普通会员

    Rank: 2

    积分
    6600
    发表于 2020-2-11 09:44:48 | 显示全部楼层
    多谢分享~~~~~~~~~~~~~
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    3298

    帖子

    6602

    积分

    禁止发言

    积分
    6602
    发表于 2020-2-12 09:19:14 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    3335

    帖子

    6672

    积分

    普通会员

    Rank: 2

    积分
    6672
    发表于 2020-2-15 18:06:43 | 显示全部楼层
    天哪终于找到这个课程了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    3314

    帖子

    6630

    积分

    普通会员

    Rank: 2

    积分
    6630
    发表于 2020-2-18 18:38:05 | 显示全部楼层
    佩服佩服!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    3189

    帖子

    6388

    积分

    禁止发言

    积分
    6388
    发表于 2020-2-29 23:13:13 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|Java自学网

    GMT+8, 2024-4-23 20:53 , Processed in 0.084896 second(s), 35 queries .

    Powered by Javazx

    Copyright © 2012-2022, Javazx Cloud.

    快速回复 返回顶部 返回列表