java自学网VIP

Java自学网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 18035|回复: 103

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

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

    [LV.Master]出神入化

    2025

    主题

    3683

    帖子

    6万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    66345

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

    发表于 2019-8-6 01:10:52 | 显示全部楼层 |阅读模式
    《Java8函数式编程之Function》场景:可以应用在计算逻辑中 java代码2 J& R5 {/ W* g/ i& p8 \

    5 p- N8 [# R" B$ u2 f8 S部分java源码:% ^1 H) I5 C7 ^% F- q
    1、
    ( M* a/ q3 G9 Q2 `package com.javazx.jdk8;
    7 M$ [8 R: J  t9 f, e+ V$ j2 L6 O2 X
    2 [4 [% q, }& c/ l0 X
    import java.util.function.BiFunction;0 c* @6 n1 y. V5 g& k9 G! |5 V. f. H
    import java.util.function.Function;
    & y) t; a! R# G6 k( f1 C
    ( {0 Z! X8 S4 q
    /**, m- K7 Z7 T( q
    * @author: itmrchen
    5 [# b0 B  _) w
    * @Description: Function中的compose和andThen两个方法的使用
    + x; ^% M6 \$ n: K9 o
    * 如果是两个参数一个输出则用BiFunction% N  c# ~6 N& h$ j/ A% _# }1 s$ P
    * @date 2019/8/6 0:16
    * g# T5 Z5 l% h2 o$ z# }- }$ \
    */
    7 Z$ A: t* j/ g( `
    public class FunctionTest2 {7 [$ |$ y" h+ Z/ z, G) C8 ?
        public static void main(String[] args) {
    ; ~, J# a5 Z2 e8 M, X) A- M' ?% n        FunctionTest2 functionTest = new FunctionTest2();1 l4 v- K* z) [( ~/ d8 @: [7 k1 Q
            System.out.println(functionTest.compute(2, value -> value * 3, value -> value * value));" t5 r! R7 t- V& {
            System.out.println(functionTest.compute2(2, value -> value - 3, value -> value * value));
    # s: P% l2 d" @% \
    * [% I8 k2 `8 l( a/ k
            System.out.println(functionTest.compute3(2, 3, (value1, value2) -> value1 + value2));
    * V5 s" E! z" d5 {4 ]2 b! D; N" I
    6 P, D. b8 i) `) G4 N' Y
            System.out.println(functionTest.compute4(2, 3, (value1, value2) -> value1 + value2, value -> 2 * value));
    4 O  k/ L& ]' P3 o7 O

      X9 r8 }' R2 }" Q  U& n
        }9 Y9 `' S' X# }; m& f- A
      o  X# |3 W# f- p# [5 z$ N
        /**
    6 f2 B4 W9 u% P2 g: ~
         * 先计算function2 再将结果与function1运算
    * j% M: F" z3 @9 W3 n, V- P
         *
    + v* F6 \) t  ~( G( v# T: z
         * @param a( c) G, J# Z2 K; y- h3 O- ~0 k8 }& W
         * @param function1
    $ F6 ~- o. w" R, o
         * @param function2
    2 b5 l7 f7 t& J8 M: w9 ?% }# a
         * @return% p% G6 p% l$ c7 \1 b6 V9 y
         */  ^+ A6 t; U" \( t; N. ~  d2 {
        public int compute(int a, Function<Integer, Integer> function1, Function<Integer, Integer> function2) {$ t7 }, k7 X, L+ f9 |
            return function1.compose(function2).apply(a);) t: Q' _) z8 t
        }
    0 u* X# p$ H3 X  S8 g6 ]' h% ^2 g: a/ w) x/ t+ Z# x+ C# D
        /**2 [) n! D; J/ x( R* @2 j8 q1 u! A( Y
         * 先计算function1 再将结果与function2运算
    $ x) ^" E2 k: S& G3 k
         ** i6 n. e+ l& U8 I) b: G
         * @param a
    1 u" Q# \9 O0 a* M: o8 F
         * @param function1
    0 d6 ]0 p4 Q$ ]
         * @param function2
    6 D, W* {4 U/ P3 E
         * @return+ ?) @: x& q8 V# ~1 R
         */
    - k! y+ d/ d- I6 I6 P$ Z0 o# R
        public int compute2(int a, Function<Integer, Integer> function1, Function<Integer, Integer> function2) {! Z/ c% u: }1 }1 p
            return function1.andThen(function2).apply(a);
    / x4 ?" b; {* Z) Y/ t: o
        }2 Z! |# L- N  P+ o

    " _% [  t2 f4 `) S0 T3 U    /**+ h9 ]7 O% V3 C# n1 c
         * 具体操作由调用者决定
    , @* q1 ~% N) F* }: s8 s1 J
         *$ `0 Q6 T1 Y9 X0 D7 [( j) E
         * @param a! g" ^% N' L9 Q
         * @param b
    4 _; D& e' S' G5 k- F7 M
         * @param function
    / |/ @' H6 q0 W# s( p; n# N! C2 Z! \
         * @return8 U9 N9 m% X( M+ ]. y+ ?
         */
    4 I% h; P6 K: m( o+ }. |
        public int compute3(int a, int b, BiFunction<Integer, Integer, Integer> function) {
    9 ~/ \, w9 q. [, H% `. a6 G        return function.apply(a, b);
    9 O8 @- M" l4 y$ K  u
        }" Q4 q8 a1 @5 i: F+ k
    9 B3 C8 N1 Y8 W4 v5 R
        /*** v( e  X7 Q1 `3 D. ?2 U& s- ], Q
         * @param a
    + C$ w( n2 v* p; ?8 B' [
         * @param b) \) p" w: Q, M$ V/ V5 P; ^( P1 N
         * @param biFunction, L& M' L$ l! K- |$ @3 L( F: F
         * @param function
    6 ~$ d5 s( S  ^/ z( L
         * @return7 [/ `( Z0 n: W5 x( [% N/ M
         */
    : }' c3 p" F, z. p  D) @
        public int compute4(int a, int b, BiFunction<Integer, Integer, Integer> biFunction, Function<Integer, Integer> function) {# _  J3 Q  W4 O, w  y4 M
            return biFunction.andThen(function).apply(a, b);
    ) o, p; W4 D0 w1 s
        }
      O# \7 ^! R! O0 w) p7 V; K. L1 z/ D0 p1 d" Z4 a, ~* j
    ; h( t9 x* q3 M; [4 U% q" j5 j
    }8 y# L, e/ w  Y( ~. B! a0 I. o' q5 N

    6 A' F2 d8 Z7 F7 k8 J1 @$ c
    ! G2 Y/ ^/ C) Y/ r, }: l( F/ O0 b

    % b5 i) D: ~: F$ B5 T7 Z! G( ~$ I7 t, F5 e6 @( C
    - K9 y6 i. u4 @6 ?( l* y
    github地址:
    https://github.com/itmrchen/java8位置在 java8\src\main\java\com\javazx\jdk8\FunctionTest.java FunctionTest2.java' W" {; o! |0 _! O& D* J+ o
    % Z' }* O8 A) o1 F' E; T: w; w2 K. ?4 R

    ( K+ I9 v+ L1 I, o3 h8 B4 j& [7 t3 }. |' K# [& T

    $ ^" O$ M1 v1 f+ P! o/ V1 v( B4 I! v1 ~0 ]% S: M
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    4133

    帖子

    8270

    积分

    普通会员

    Rank: 2

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

    使用道具 举报

    该用户从未签到

    0

    主题

    4076

    帖子

    8154

    积分

    普通会员

    Rank: 2

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

    使用道具 举报

    该用户从未签到

    0

    主题

    4069

    帖子

    8140

    积分

    普通会员

    Rank: 2

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

    使用道具 举报

    该用户从未签到

    0

    主题

    4068

    帖子

    8138

    积分

    普通会员

    Rank: 2

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

    使用道具 举报

    该用户从未签到

    0

    主题

    4183

    帖子

    8368

    积分

    普通会员

    Rank: 2

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

    使用道具 举报

    该用户从未签到

    0

    主题

    4133

    帖子

    8272

    积分

    禁止发言

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

    使用道具 举报

    该用户从未签到

    0

    主题

    4212

    帖子

    8426

    积分

    普通会员

    Rank: 2

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

    使用道具 举报

    该用户从未签到

    0

    主题

    4168

    帖子

    8338

    积分

    普通会员

    Rank: 2

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

    使用道具 举报

    该用户从未签到

    0

    主题

    4050

    帖子

    8110

    积分

    禁止发言

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

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-11-21 18:10 , Processed in 0.137393 second(s), 33 queries .

    Powered by Javazx

    Copyright © 2012-2022, Javazx Cloud.

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