函数式编程

函数式编程思想

它属于“结构化编程”的一种,主要思想是把运算过程尽量写成一系列嵌套的函数调用。函数式编程比面向对象的优势就是粒度更小,生命周期更短。减少bug的有效途径就是减少变量的生命周期,缩小模块的粒度。
-------------------------------------------------------------------------------------摘自函数式编程思想

Lambda表达式

概述

Java 8的一个大亮点是引入Lambda表达式,使用它设计的代码会更加简洁。当开发者在编写Lambda表达式时,也会随之被编译成一个函数式接口,它是函数式编程思想的一个重要体现。

下述所有测试代码源码地址:https://gitee.com/ArnoldSu/functionalProgramming.git

基本格式

(参数列表)->{代码}

初始化之后所有演示代码需要用到的数据集合

public static User createUser() {return new User().setId(RandomUtil.randomLong()).setAge(RandomUtil.randomInt(0, 100)).setName(RandomUtil.randomString("澄邈德泽海超海阳海荣海逸海昌瀚钰瀚文涵亮涵煦明宇涵衍浩皛浩波浩博浩初浩宕浩歌浩广浩邈浩气浩思浩言鸿宝鸿波鸿博鸿才鸿畅鸿畴鸿达鸿德鸿飞鸿风鸿福鸿光鸿晖鸿朗鸿文鸿轩鸿煊鸿骞鸿远鸿云鸿哲鸿祯鸿志鸿卓嘉澍光济澎湃彭泽鹏池鹏海浦和浦泽瑞渊越泽博耘德运辰宇辰皓辰钊辰铭辰锟辰阳辰韦辰良辰沛晨轩晨涛晨濡晨潍鸿振吉星铭晨起运运凡运凯运鹏运浩运诚运良运鸿运锋运盛运升运杰运珧运骏运凯运乾维运运晟运莱运华耘豪星爵星腾星睿星泽星鹏星然震轩震博康震震博振强振博振华振锐振凯振海振国振平昂然昂雄昂杰昂熙昌勋昌盛昌淼昌茂昌黎昌燎昌翰晨朗德明德昌德曜范明飞昂高旻晗日昊然昊天昊苍昊英昊宇昊嘉昊明昊伟昊硕昊磊昊东鸿晖鸿朗华晖金鹏晋鹏敬曦景明景天景浩俊晖君昊昆琦昆鹏昆纬昆宇昆锐昆卉昆峰昆颉昆谊昆皓昆鹏昆明昆杰昆雄昆纶鹏涛鹏煊曦晨曦之新曦旭彬旭尧旭鹏旭东旭炎炫明宣朗学智轩昂彦昌曜坤曜栋曜文曜曦曜灿曜瑞智伟智杰智刚智阳昌勋昌盛昌茂昌黎昌燎昌翰晨朗昂然昂雄昂杰昂熙范明飞昂高朗高旻德明德昌德曜智伟智杰智刚智阳瀚彭旭炎宣朗学智昊然昊天昊苍昊英昊宇昊嘉昊明昊伟鸿朗华晖金鹏晋鹏敬曦景明景天景浩景行景中景逸景彰昆鹏昆明昆杰昆雄昆纶鹏涛鹏煊景平俊晖君昊昆琦昆鹏昆纬昆宇昆锐昆卉昆峰昆颉昆谊轩昂彦昌曜坤曜文曜曦曜灿曜瑞曦晨曦之新曦鑫鹏旭彬旭尧旭鹏旭东浩轩浩瀚浩慨浩阔鸿熙鸿羲鸿禧鸿信泽洋泽雨哲瀚胤运佑运允晨运恒运发云天耘志耘涛振荣振翱中震子辰晗昱瀚玥瀚昂瀚彭景行景中景逸景彰绍晖文景曦哲永昌子昂智宇智晖晗日晗昱瀚昂昊硕昊磊昊东鸿晖绍晖文昂文景曦哲永昌子昂智宇智晖浩然鸿运辰龙运珹振宇高朗景平鑫鹏昌淼炫明昆皓曜栋文昂治汇", 2)).setNickname(RandomUtil.randomString("风雨踏梦行  樱花味女孩  柠檬泪  日之夕矣  半世浮生  逆水寒  雨后初晴  陌路  不缺友人  听风说旧人  舟不渡我  哑剧  沫丶白色控  傻子快来~  厌己  森屿海巷  断桥再见  坚毅之梦  щǒ冇寎  遗忘  梦想的翅膀  捂着心脏说胃疼  南巷孤猫i  手捧阳光  樱花涵  指尖微凉°  你给的承诺丶早已泛黄  尐懒蟲ゞ  坚强的另一个名字叫苦撑  孤街浪人  瞌睡虫  薄荷凉  孤魄  热巴  温柔似你眉眼  离心咒ゝ  那一抹浅笑隱藏忧伤  盛夏北梦初心未改  幸福式梦想※  唯念  依然血红。  沦陷的痛", 5)).setSex(RandomUtil.randomInt(0, 2)).setDep(createDepartment());}public static List<Department> createDepartment() {List<Department> departments = new ArrayList<Department>();int i = RandomUtil.randomInt(1, 4);for (int j = 0; j < i; j++) {departments.add(new Department().setId(RandomUtil.randomLong()).setName(RandomUtil.randomString("人事技术前台前端后端", 2)).setCode(RandomUtil.randomInt(1, 10000)).setParentId(RandomUtil.randomLong(1, 10000)));}return departments;}public static List<User> initUsers = new ArrayList<User>();@BeforeAllpublic static void init() {for (int i = 0; i < 10; i++) {initUsers.add(createUser());}}

测试lambda表达式输出打印

     /*** description 测试lambda表达式输出打印用户信息** @param* @return void* @author Arnold* @date 2022/6/7**/@Testpublic void Test() {initUsers.forEach(user -> System.out.println(user.toString()));}

Lambda省略规则

  • 不需要声明参数类型,编译器可以统一识别参数值。
  • 一个参数无需定义圆括号,但多个参数需要定义圆括号。
  • 如果主体包含了一个语句,就不需要使用大括号。
  • 如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定表达式返回了一个数值。

Lambda 方法引用

引用数据类型最大的特点是可以进行内存的指向处理,但是在传统的开发之中一直所使用的只是对象引用操作,而jdk1.8以后也提供有方法的引用,即:不同的方法名称可以描述同一个方法(即可以为一个方法定义多个名字,但是要求必须是函数式接口)。如果要进行方法的引用在java里面提供了如下的四种形式

  • 引用静态方法: 类名称 :: static方法名称;
  • 引用某个实例对象的方法: 实例化对象 :: 普通方法;
  • 引用特定类型的方法: 特定类 :: 普通方法;
  • 引用构造方法: 类名称 :: new ;

函数式编程(JAVA)——Lambda表达式相关推荐

  1. Java 函数式编程和 lambda 表达式

    为什么要使用函数式编程 函数式编程更多时候是一种编程的思维方式,是种方法论.函数式与命令式编程的区别主要在于:函数式编程是告诉代码你要做什么,而命令式编程则是告诉代码要怎么做.说白了,函数式编程是基于 ...

  2. 用通俗易懂的大白话搞明白Java里的函数式编程和Lambda表达式

    今天,用通俗易懂的大白话来彻底搞明白Java里的函数式编程和Lambda表达式 为什么引入函数式编程,lambda表达式? 大家都知道,JDK1.8引入了函数式编程,lambda表达式. 那有没有想过 ...

  3. 函数式编程与Lambda表达式

    函数式编程与Lambda表达式 1 函数式编程的优势 1.1 函数式编程思想 在数学中,函数就是有输入量.输出量的一套计算方案,也就是"拿什么东西做什 么事情".编程中的函数,也有 ...

  4. 函数式编程(Lambda表达式、Optional、Stream流)

    函数式编程(Lambda表达式.Optional.Stream流) 文章目录 函数式编程(Lambda表达式.Optional.Stream流) 一.概述 1. 为什么要学习函数式编程? 2. 函数式 ...

  5. Java函数式编程和Lambda表达式

    文章目录 什么是函数式编程 Lambda表达式 @FunctionalInterface函数式接口 Lambda表达式的格式 方法引用 什么是函数式编程 相信大家都使用过面向对象的编程语言,面向对象编 ...

  6. Java 8th 函数式编程:lambda 表达式

    Lambda 表达式是 java 8th 给我们带来的几个重量级新特性之一,借用 lambda 表达式可以让我们的程序设计更加简洁.最近新的项目摒弃了 6th 版本,全面基于 8th 进行开发,本文将 ...

  7. java convert函数_Java 函数式编程和Lambda表达式

    1.Java 8最重要的新特性 Lambda表达式.接口改进(默认方法)和批数据处理. 2.函数式编程 本质上来说,编程关注两个维度:数据和数据上的操作. 面向对象的编程泛型强调让操作围绕数据,这样可 ...

  8. python 的高级特性:函数式编程,lambda表达式,装饰器

    一.Python语言的高级特性 函数式编程 基于Lambda演算的一种编程方式 程序中只有函数 函数可以作为参数,同样可以作为返回值 纯函数式编程语言:LISP,Haaskell Python函数式编 ...

  9. java函数式编程_Java 函数式编程和 lambda 表达式详解

    作者:DemonsI my.oschina.net/demons99/blog/2223079 为什么要使用函数式编程 函数式编程更多时候是一种编程的思维方式,是种方法论.函数式与命令式编程的区别主要 ...

  10. 【Java】函数式编程思想-Lambda表达式

    面向对象的思想:做一件事情,找一个能解决这个事情的对象,调用对象的方法,完成事情. 函数式编程思想:只要能获取到结果,谁去做的,怎么做的都不重要,重视的是结果,不重视过程 Java 8(JDK 1.8 ...

最新文章

  1. 一个隐马尔科夫模型的应用实例:中文分词
  2. 未来几年自动驾驶预测(下)
  3. CMake编译cuda出错
  4. SVM支持向量机——核函数、软间隔
  5. 计算机辅助教学( ),27075 计算机辅助教学
  6. Django(part23)--Django shell的使用
  7. DreamWeaver连接Tomcat用以编辑和测试JSP
  8. python交互式方式、代码文件方式_涨见识了,在终端执行 Python 代码的 6 种方式
  9. java图片的缩放_Java的图片自动缩放
  10. 第 1 章 程序员考试简介
  11. 【你们项目组有几个测试,你负责什么,迭代了几个版本,迭代周期,写了多少测试用例?】
  12. c# .net PayPal支付验证
  13. 如何快速查找综述类论文
  14. python获取标准的北京时间的源码
  15. TcaplusDBX光与夜之恋 | 与众不同的真实恋爱
  16. apache atlas 官方安装
  17. 小兵物语---短篇小说
  18. linux文件传输限制带宽,linux – 如何限制CentOS服务器上传/下载带宽?
  19. 十位安卓开发者的 17 年总结
  20. 做一个程序媛是一种什么体验?

热门文章

  1. 嵌入式硬件(四)常用模拟集成电路
  2. Security+知识点
  3. lisp调用qleader端点_常用函数.lsp - AutoLISP/Visual LISP 编程技术 - CAD论坛 - 明经CAD社区 - Powered by Discuz!...
  4. 关于 BBBB 站视频删除问题解释
  5. excel不同电脑上显示不一样解决方案
  6. App Inventor 2能编译出苹果iOS版App吗?
  7. SSL网站安全证书https加密防劫持
  8. 机器人学:操作臂运动学(Manipulator Forward Kinematics)
  9. STM32步进电机S型加减速算法
  10. (无Xcode)Mac OS X中解决 make,gcc等命令找不到