java自学网VIP

Java自学网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 18722|回复: 103

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

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

    [LV.Master]出神入化

    2039

    主题

    3697

    帖子

    6万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    66471

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

    发表于 2019-8-6 01:10:52 | 显示全部楼层 |阅读模式
    《Java8函数式编程之Function》场景:可以应用在计算逻辑中 java代码
    1 A" `- C1 w) a' v4 ]  E
      |+ T3 e- ?! u, f2 I; x( E部分java源码:; c1 ~* T4 j0 p, R9 O* o
    1、
    & n' R! Q, X, R# N2 u  V" f; hpackage com.javazx.jdk8;
    9 y3 p3 v+ V# C2 A, l
    * {- Z0 D0 W  A' g1 V) d
    import java.util.function.BiFunction;5 [0 M9 E- M3 X' M; R4 B5 o+ n
    import java.util.function.Function;
    . E6 i6 ?. w. c

    2 c; \) m- @5 X" v, @
    /**! t. b- t2 d& {* X( f. j" F
    * @author: itmrchen
    1 T9 W% o0 [( l% d2 e
    * @Description: Function中的compose和andThen两个方法的使用
    3 c. D* y9 _; T% `
    * 如果是两个参数一个输出则用BiFunction
    " H! ]; z) U4 x$ Y) L) Z9 s
    * @date 2019/8/6 0:169 Q0 D- W/ G* Y" A3 y
    */8 v/ u- E9 }! {3 Q: I
    public class FunctionTest2 {
    & A# r" j, T/ N1 t    public static void main(String[] args) {' q( M( o' H' B* |8 f
            FunctionTest2 functionTest = new FunctionTest2();8 C: ?7 n' d' N# v4 K0 _+ P
            System.out.println(functionTest.compute(2, value -> value * 3, value -> value * value));
    8 @+ o) u! b4 P" W
            System.out.println(functionTest.compute2(2, value -> value - 3, value -> value * value));" e- d2 u, i! Z/ k$ K' O& A8 D- X
    * n1 S9 o6 w: }! f( t6 I
            System.out.println(functionTest.compute3(2, 3, (value1, value2) -> value1 + value2));$ T& G3 F. S5 p2 a! V; [! q
    1 [0 m7 B3 Y1 G  c
            System.out.println(functionTest.compute4(2, 3, (value1, value2) -> value1 + value2, value -> 2 * value));  K1 M! c$ X0 m# y) ^

    , ~- h& Y/ {& O- w. e5 i& U2 h
        }
      ^& g8 O  K8 u7 P! K. K3 d6 u
    7 H2 f- Z. c9 N. v7 x' ?, E    /**1 v+ T! l9 T) N+ J) r& [+ G, T+ R" y
         * 先计算function2 再将结果与function1运算2 w, O. D2 t$ V
         *
    * C0 L! G/ v4 X( n  o. y
         * @param a, A: r3 k9 _" z$ z. P2 D0 L
         * @param function1
    $ Q, {! P- z5 e" a. s& g
         * @param function2; x3 I# ?3 U, Q+ x
         * @return
    ! g0 Q6 l( Y: K- M9 G7 s& Z0 R0 R
         */! L3 Y6 W5 [& ?% h3 X" F/ L2 p2 k
        public int compute(int a, Function<Integer, Integer> function1, Function<Integer, Integer> function2) {6 k# i$ w% l3 T; i8 s3 H* g
            return function1.compose(function2).apply(a);
    2 n' r' B# K( t
        }  l9 C. e. A' C% @6 @
    7 U& p0 h: M# G5 O2 M
        /**
    0 T5 c& B2 F* u7 a
         * 先计算function1 再将结果与function2运算
    4 j% j: Q+ p. ^' ]( E8 @6 H- B
         *, j( F# A/ _) a, k% H: F1 G
         * @param a
    / w4 m( P! I9 _, }2 D
         * @param function1
    ) z! u" r* O/ F! k7 t9 |& O+ b
         * @param function29 I& @' b8 D6 y
         * @return$ t% `: W* D0 k6 B
         */6 {5 x. P2 }7 D, j  I7 S, K% g& q
        public int compute2(int a, Function<Integer, Integer> function1, Function<Integer, Integer> function2) {; O$ W, L- @* h9 T2 k& a, x
            return function1.andThen(function2).apply(a);
    - H3 J! k2 G0 Z" x0 ?( Y
        }% B% C/ U2 k5 ~4 e( m" I

    ' a. [4 K3 w7 I/ b# j8 B: H0 T    /**3 c* |1 \9 O' I) J2 A
         * 具体操作由调用者决定
    / Q0 a+ b- ^5 }3 J& y+ M
         *
    7 I7 |, [4 A# Z* C; f5 ?
         * @param a5 ?, Q8 D4 }  v/ I- @0 H
         * @param b
    ; d! W6 \& B7 N0 ?1 o
         * @param function
    5 _  K( B' G& }* }. ?( ~
         * @return; q# F8 S8 M0 w: `
         */
    5 D; G9 Y& J/ U
        public int compute3(int a, int b, BiFunction<Integer, Integer, Integer> function) {
    7 g8 k- q$ V* q- H9 z7 f        return function.apply(a, b);
    $ U+ R+ F; T6 a
        }8 F6 t$ t: X7 F8 I4 O! s  D8 i

    % w# \0 H: ~+ p. \6 F/ U2 \8 u5 X    /**) W7 [% [- @, w0 Z) r- M
         * @param a# m# _/ V: a2 a
         * @param b
    + Z# Y" x+ B0 K, ]8 m. v
         * @param biFunction
    . ]0 j+ z7 D6 k! |( {9 A" X8 u% }
         * @param function# K0 g- _; f! J" q" P4 H1 F
         * @return* E1 w, i" P4 c: j0 r# _( x0 q
         */* L. Z. r4 J% Q! {/ p
        public int compute4(int a, int b, BiFunction<Integer, Integer, Integer> biFunction, Function<Integer, Integer> function) {* ?0 `# F. B' V6 v7 y7 f- ~: n
            return biFunction.andThen(function).apply(a, b);. _* a6 K( S- z! h$ Z" l
        }- S1 Z) t' y. s8 e
    $ I. l- i' O/ p! I% b$ o/ ~
    # \1 [0 C2 w8 r5 [8 V- k
    }0 e( w6 i7 w3 p: H# _0 A
    4 F7 t3 ]+ _; @* i$ R( V) N9 k) p* w
    # f4 P2 x9 j: y$ z! I* L

    7 F# d; |; Y* H; ?1 {$ i
    - Y& M2 |# H6 P" K9 ]' r
    9 _8 [: h7 |9 e1 }github地址:
    https://github.com/itmrchen/java8位置在 java8\src\main\java\com\javazx\jdk8\FunctionTest.java FunctionTest2.java
    . O$ x8 \4 E" @/ ~) M, y
    # D& ~- b( |3 h! M5 f8 w1 A0 j& Q* C0 x; [$ R+ }6 I
    6 T, ^8 i/ u% |& @& h1 S
    . ?' F; F( h  Z7 `
    / w% P3 k$ s% P" M
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    4378

    帖子

    8760

    积分

    普通会员

    Rank: 2

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

    使用道具 举报

    该用户从未签到

    0

    主题

    4306

    帖子

    8614

    积分

    普通会员

    Rank: 2

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

    使用道具 举报

    该用户从未签到

    0

    主题

    4302

    帖子

    8606

    积分

    普通会员

    Rank: 2

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

    使用道具 举报

    该用户从未签到

    0

    主题

    4296

    帖子

    8594

    积分

    普通会员

    Rank: 2

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

    使用道具 举报

    该用户从未签到

    0

    主题

    4405

    帖子

    8812

    积分

    普通会员

    Rank: 2

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

    使用道具 举报

    该用户从未签到

    0

    主题

    4382

    帖子

    8770

    积分

    禁止发言

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

    使用道具 举报

    该用户从未签到

    0

    主题

    4429

    帖子

    8860

    积分

    普通会员

    Rank: 2

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

    使用道具 举报

    该用户从未签到

    0

    主题

    4387

    帖子

    8776

    积分

    普通会员

    Rank: 2

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

    使用道具 举报

    该用户从未签到

    0

    主题

    4270

    帖子

    8550

    积分

    禁止发言

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

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2025-1-22 08:21 , Processed in 0.256981 second(s), 33 queries .

    Powered by Javazx

    Copyright © 2012-2022, Javazx Cloud.

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