请选择 进入手机版 | 继续访问电脑版
java自学网VIP

Java自学网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 16188|回复: 103

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

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

    [LV.Master]出神入化

    2025

    主题

    3683

    帖子

    6万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    66083

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

    发表于 2019-8-6 01:10:52 | 显示全部楼层 |阅读模式
    《Java8函数式编程之Function》场景:可以应用在计算逻辑中 java代码5 r: a9 K: c, r+ h7 T9 P8 Q
    & f1 c5 _- P8 h- H' ]) m, @
    部分java源码:
    , ?# e8 T7 f# L8 n5 k# w1、" K8 q+ z9 o$ \( \( b: h
    package com.javazx.jdk8;$ X$ Q1 v, ?' l0 f# r
    5 T5 |" O, K2 M# q  W
    import java.util.function.BiFunction;* G% A/ r  i; i4 k. v
    import java.util.function.Function;" Z9 D( f, R. @5 A" q
      m/ r2 V( K1 r/ d6 t6 X. L- z, K
    /**
    7 T0 [( Z& m+ m) z; a0 T2 `+ {/ @# l
    * @author: itmrchen3 @  Z5 S1 i: E/ w# {; G
    * @Description: Function中的compose和andThen两个方法的使用
    5 I4 J0 [+ j2 z/ v( E
    * 如果是两个参数一个输出则用BiFunction( [& Z5 A% ~& K! [. n$ u  l
    * @date 2019/8/6 0:16; d( m0 y6 ^# `# S0 }
    */  Y" V* H; }* C; p3 B
    public class FunctionTest2 {, v; }( A1 V- ]: w8 o
        public static void main(String[] args) {7 i7 k  j8 |$ l+ m; y8 E- _# L% T
            FunctionTest2 functionTest = new FunctionTest2();
    : @; s# t5 C1 z* r- T1 S4 z
            System.out.println(functionTest.compute(2, value -> value * 3, value -> value * value));, d3 Q" W) o7 Y" L! C/ Q' {- |
            System.out.println(functionTest.compute2(2, value -> value - 3, value -> value * value));
    1 c9 @+ C, @8 s# B. T& u

    9 s3 I$ X' J, |' V6 B& l4 F% y2 p
            System.out.println(functionTest.compute3(2, 3, (value1, value2) -> value1 + value2));, Y0 U. P$ G3 U' D& d+ J
    * j. b+ m' h6 y  s2 s
            System.out.println(functionTest.compute4(2, 3, (value1, value2) -> value1 + value2, value -> 2 * value));8 M: x$ k1 t; Z; \! I- v1 D
    ' }2 T) A5 O9 o; f, u0 \8 \" a' W4 j# n
        }
    1 l0 `. d2 w) J% |* [$ r" G, l1 h! j' K' u" t/ A
        /**
    # P; {# J" f0 [8 [! h
         * 先计算function2 再将结果与function1运算
    % W$ {1 b) u  c4 n0 z: u5 L4 }. e
         *" V- P: @7 s9 z3 p& L
         * @param a, v" m, \" q7 k- x9 e+ b0 R
         * @param function1+ D/ i3 U. Q, V9 J' [$ z6 |
         * @param function2
    ' [; L; U7 Q/ ]# O$ y( g/ Y
         * @return
    & h! R& F- `$ x
         */" y/ s) U, c* A( U, Q! ?
        public int compute(int a, Function<Integer, Integer> function1, Function<Integer, Integer> function2) {: f! |* R5 z' z. P3 ^: q0 l
            return function1.compose(function2).apply(a);$ Y2 z* k2 y" h" K, d1 f) z
        }# A5 q0 }, t* `

    / A( L: M* J) y: a& d0 N" g6 k5 z    /**0 I9 P- T6 ^4 D, ^+ j# P
         * 先计算function1 再将结果与function2运算
    8 Q4 _* u( W9 x( J- J9 y# m
         *6 Q, c0 Y3 i; ^# F+ ~/ A% a
         * @param a
    . i$ t% M, r, k1 c5 R9 A1 j% y7 t5 f2 g
         * @param function1
    9 E. F& B# |1 J, o" e6 Q
         * @param function29 Q" w+ Y* Y  c( z2 m' F
         * @return
    / {9 s, \/ u2 Y( H8 }
         */
    " z( Z: T1 M2 @1 W/ Q# R( C
        public int compute2(int a, Function<Integer, Integer> function1, Function<Integer, Integer> function2) {
    5 V- _# P' |1 H; a$ B0 x        return function1.andThen(function2).apply(a);/ y5 ~2 Z) r$ n' R/ g3 U
        }7 B/ T2 h2 o: c9 b7 c' I4 m1 g- O
    9 O/ `; s* |+ K7 Q
        /**
    $ M. `! W1 X, H3 E3 n$ `4 S
         * 具体操作由调用者决定
    : K2 r) X6 a& ^; P9 H7 B7 V) }
         *( j) i0 s/ J/ @# ^5 G
         * @param a+ j1 C5 J6 u" o" k' o4 y; {
         * @param b
    ; u) ^8 u/ i7 Q5 d' V5 \6 w
         * @param function
    9 S8 f6 K* L9 w+ R( e
         * @return
    . l1 C$ C  v) a4 J7 u) P
         */
    ( n1 D# o( b6 j( ?
        public int compute3(int a, int b, BiFunction<Integer, Integer, Integer> function) {9 a' P5 I# h' c0 W! F0 C9 }
            return function.apply(a, b);
    ; `% q7 `9 ?# c
        }
    9 Q1 d! Y, f/ v& \; C4 J. N1 Q" g8 T7 i6 U
        /**
    : J" E6 \( Y3 X, j. f$ k3 H' T& e) U# Q
         * @param a5 K8 J. M$ h+ q0 n
         * @param b
    * f* m' i  V$ l. Y' v
         * @param biFunction
    8 r8 f7 v  M+ S5 j: ?) Y
         * @param function* a9 h: P) T$ s6 x
         * @return; {2 f* m0 h4 y, l0 X% G
         */$ _2 O3 g4 h" {# T
        public int compute4(int a, int b, BiFunction<Integer, Integer, Integer> biFunction, Function<Integer, Integer> function) {
    - J2 d7 O3 K) n        return biFunction.andThen(function).apply(a, b);/ I9 \3 ~( D! U
        }
    ; S& K4 T/ x9 C( u8 n
    / a2 c' p  U; N) l/ c: D7 Z0 `; e! ~& A8 a8 U* n( `+ w
    }
    9 e/ t% }/ f- l& a
    ! V' l' V" n7 x

    # ]" I! S! W+ E* w2 n. W3 J+ g0 |* w: y! ?1 c- m3 `
    $ i6 }* J( d( R" O1 X9 I7 S4 r- L
    1 N' S* K+ T: n, f6 D; t
    github地址:
    https://github.com/itmrchen/java8位置在 java8\src\main\java\com\javazx\jdk8\FunctionTest.java FunctionTest2.java
    7 B! @, o- C8 Z+ o" ~8 E$ x+ l
      _- ^3 w) t. t# G7 x7 J/ @7 K: e8 n; s% P0 w7 [- Q' p- n
    " f9 u6 n, D- b: d8 q8 O
    * ?; |) X5 F% q/ Z2 X, L% p$ B

    + P& K! L, E, g
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    3252

    帖子

    6508

    积分

    普通会员

    Rank: 2

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

    使用道具 举报

    该用户从未签到

    0

    主题

    3224

    帖子

    6450

    积分

    普通会员

    Rank: 2

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

    使用道具 举报

    该用户从未签到

    0

    主题

    3201

    帖子

    6404

    积分

    普通会员

    Rank: 2

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

    使用道具 举报

    该用户从未签到

    0

    主题

    3183

    帖子

    6368

    积分

    普通会员

    Rank: 2

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

    使用道具 举报

    该用户从未签到

    0

    主题

    3267

    帖子

    6536

    积分

    普通会员

    Rank: 2

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

    使用道具 举报

    该用户从未签到

    0

    主题

    3270

    帖子

    6546

    积分

    禁止发言

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

    使用道具 举报

    该用户从未签到

    0

    主题

    3300

    帖子

    6602

    积分

    普通会员

    Rank: 2

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

    使用道具 举报

    该用户从未签到

    0

    主题

    3290

    帖子

    6582

    积分

    普通会员

    Rank: 2

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

    使用道具 举报

    该用户从未签到

    0

    主题

    3157

    帖子

    6324

    积分

    禁止发言

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

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-4-18 18:43 , Processed in 0.116931 second(s), 35 queries .

    Powered by Javazx

    Copyright © 2012-2022, Javazx Cloud.

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