java自学网VIP

Java自学网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 19192|回复: 103

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

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

    [LV.Master]出神入化

    2056

    主题

    3714

    帖子

    6万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    66562

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

    发表于 2019-8-6 01:10:52 | 显示全部楼层 |阅读模式
    《Java8函数式编程之Function》场景:可以应用在计算逻辑中 java代码
    ' a1 q- r! A& e/ b$ t- |  Z8 d* s
    $ T6 n* \# m5 L部分java源码:
    5 d+ Q- E6 {! _) z5 n! O5 G1、4 M' v0 l) s$ [3 ~- w$ P! F7 l
    package com.javazx.jdk8;* y8 a* v4 D3 J* e4 q7 ?% h

    1 p& u. t  y2 m! g9 J  Y+ K
    import java.util.function.BiFunction;& }5 d2 b- @3 a8 f
    import java.util.function.Function;4 k( R6 U3 T3 U4 E

    & I0 k* s4 x) J
    /**
    % X$ p+ C  j. P. J
    * @author: itmrchen
    ! O% q; z/ O6 ?" ^& F  T3 I7 J! U( A
    * @Description: Function中的compose和andThen两个方法的使用$ T( P& k1 V5 b  j
    * 如果是两个参数一个输出则用BiFunction/ F! C8 v) D* D) K3 i) e' S
    * @date 2019/8/6 0:16
    2 F1 ]' s; t2 j1 c, n5 e4 W7 ^
    */3 f7 _3 x3 X- X. O
    public class FunctionTest2 {8 h+ T% B9 l: A6 W# D7 m
        public static void main(String[] args) {
    ! I! r6 [6 _7 m! v/ S        FunctionTest2 functionTest = new FunctionTest2();
    7 k$ a  T* ?# ]' [/ U
            System.out.println(functionTest.compute(2, value -> value * 3, value -> value * value));2 E  D; d) h. J( A+ Z: t
            System.out.println(functionTest.compute2(2, value -> value - 3, value -> value * value));; B* h( ^8 l' C2 V) v, ~# r) A$ {
    ; g& s8 g: H/ A, g( ~% ?' X! F
            System.out.println(functionTest.compute3(2, 3, (value1, value2) -> value1 + value2));& O" ?: q7 O6 g, c+ h: P

    - H# z: A6 D% p0 H& U% t# l, h( L
            System.out.println(functionTest.compute4(2, 3, (value1, value2) -> value1 + value2, value -> 2 * value));
    3 p% m! d2 K8 {: ~

    / {0 K7 M; m* w$ W# K8 [% E# a
        }
    8 Z+ u& I0 q9 Y/ C+ y! ^6 [& V
    # w+ b# ]2 F% g# {( B) S    /**
    , K* G5 m5 S& r: c
         * 先计算function2 再将结果与function1运算3 Z- Z/ H' t* b" o
         *
    8 f- q; I$ F, U! ]
         * @param a
    ' g5 J5 Q2 X# {
         * @param function1
    & q) R: x8 y% ]: {
         * @param function28 s( h% @+ B1 [4 L
         * @return# h4 L% D4 |" |% L# {
         */" x* i* L) O$ Y! I9 `$ h
        public int compute(int a, Function<Integer, Integer> function1, Function<Integer, Integer> function2) {2 z3 z5 c3 Z4 W& N/ M! O: ^3 {
            return function1.compose(function2).apply(a);& z% A  v( U# {; |, X
        }+ F' g0 Q. i  s+ l' {3 g
    + L. o4 A4 n( P7 w$ e
        /**
    6 z* J8 s2 B  y' n0 x3 q
         * 先计算function1 再将结果与function2运算. x7 _& Y3 o, r9 I7 T* d% M
         *
    2 Y1 U3 U4 |* J3 @
         * @param a
    " M9 M# A- N6 r" [! _
         * @param function1
    5 h- `2 S) \1 a8 T$ {, P- k4 m% t
         * @param function25 ^" s. k, s: p
         * @return
    ; g2 o9 w5 E2 U7 d( R
         */$ V! m4 M) S8 a
        public int compute2(int a, Function<Integer, Integer> function1, Function<Integer, Integer> function2) {# Z" U2 D/ X: n2 I
            return function1.andThen(function2).apply(a);
    # D0 J  ~3 W: l5 R
        }" b. e1 v- K/ P0 m" ^

    ( Z) E8 V% A( O$ N. G# e    /**
    . a* m0 ^- ?# |& d1 G0 B
         * 具体操作由调用者决定
    ; z$ \1 A0 d! _' m
         *
    7 H3 g3 v8 P/ F& z: a
         * @param a/ n: o6 P/ r8 N% E4 X" M  V  ?
         * @param b
    8 k! t) q9 P/ q" W: N& }/ H( f: Y5 W% Y
         * @param function( W% {7 k5 ?4 g1 T
         * @return
    4 Q# K0 G' d, P/ i9 q4 V8 x4 V# o
         */) z3 \2 @; B% ]( H9 O- `) h
        public int compute3(int a, int b, BiFunction<Integer, Integer, Integer> function) {
    8 {) J1 ]/ \* y6 o0 N: ]9 R" X        return function.apply(a, b);0 @; t" X* b2 H
        }
    - _- r! n# f7 y- f  X* ?# K7 l) n6 P, _( s+ p
        /**% D7 K6 P7 H: V4 {4 e" h0 u3 O
         * @param a
    & }2 o) f5 f; k9 t# i# f
         * @param b7 d/ `4 p  I2 ~
         * @param biFunction
    % [) ^3 H( L7 ]; A& j7 _, \; F
         * @param function& Z/ y4 W# q  z; P4 o3 \1 c
         * @return
    ' N$ m; n9 [/ A- |& c! ?
         */
      ?# A6 k* b2 j7 L+ N
        public int compute4(int a, int b, BiFunction<Integer, Integer, Integer> biFunction, Function<Integer, Integer> function) {
    3 u) h8 Y; w- h7 r        return biFunction.andThen(function).apply(a, b);) C, E/ P1 b  I6 Q
        }$ n. D0 U- K" h% G; f

    4 C, @& h" a, }5 E+ i1 `+ P/ q% ?+ Z1 J2 R
    }
    & x5 @5 d; P6 _$ W" P6 f8 B
    + m& u2 D8 m- [3 C9 M6 b

    6 L9 L) H- ^# k" o8 `
    4 V* O. w; ^) T# _1 i, T  L, Z3 @! A
    ! c" P4 P% f8 |) m
    github地址:
    https://github.com/itmrchen/java8位置在 java8\src\main\java\com\javazx\jdk8\FunctionTest.java FunctionTest2.java$ y  _8 j% x6 s
    + _( T: E4 G& s7 Y* U

    , v: i4 v% u$ o2 @0 W) e/ i5 H% M' ~( M9 ~1 [$ [, G3 r

    # L$ @: C' n9 j, Z, r
    8 o( f' y/ S8 D" t) ^; v# S
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    4480

    帖子

    8964

    积分

    普通会员

    Rank: 2

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

    使用道具 举报

    该用户从未签到

    0

    主题

    4419

    帖子

    8840

    积分

    普通会员

    Rank: 2

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

    使用道具 举报

    该用户从未签到

    0

    主题

    4406

    帖子

    8814

    积分

    普通会员

    Rank: 2

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

    使用道具 举报

    该用户从未签到

    0

    主题

    4416

    帖子

    8834

    积分

    普通会员

    Rank: 2

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

    使用道具 举报

    该用户从未签到

    0

    主题

    4509

    帖子

    9020

    积分

    普通会员

    Rank: 2

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

    使用道具 举报

    该用户从未签到

    0

    主题

    4498

    帖子

    9002

    积分

    禁止发言

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

    使用道具 举报

    该用户从未签到

    0

    主题

    4538

    帖子

    9078

    积分

    普通会员

    Rank: 2

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

    使用道具 举报

    该用户从未签到

    0

    主题

    4503

    帖子

    9008

    积分

    普通会员

    Rank: 2

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

    使用道具 举报

    该用户从未签到

    0

    主题

    4372

    帖子

    8754

    积分

    禁止发言

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

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2025-2-19 06:26 , Processed in 0.247796 second(s), 30 queries .

    Powered by Javazx

    Copyright © 2012-2022, Javazx Cloud.

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