函数式编程

函数式编程思想

它属于“结构化编程”的一种,主要思想是把运算过程尽量写成一系列嵌套的函数调用。函数式编程比面向对象的优势就是粒度更小,生命周期更短。减少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. C++【力扣LeetCode算法题库】47. 全排列 II
  2. 当我给小姐姐讲述为何黑客要挟制路由器DNS 该怎样实时发觉和防备的方法后,小姐姐那崇拜的眼神令我无法忘却
  3. java线程和线程池的使用
  4. linux系统利用wifi上网,【教程】Wii安装运行可用WIFI的Linux系统全攻略
  5. java界面布局都有什么_java入門教程-10.5Java圖形界面之布局設計
  6. 基于Python+Django的图书馆管理系统
  7. 小微型计算机期刊,小型微型计算机系统杂志
  8. 小程序(仿微信发布说说功能)
  9. CCF NOI1047 寻找鞍点
  10. 2021-06-14 七大参数,四种拒绝策略
  11. c语言中ox1小于小于a,丹江口市2018适应性数学试卷和答案
  12. mac下8080端口到80端口的转发
  13. 【快速文档】view标签,小程序中的div
  14. 全方位剖析“清华同方”,脉络千里!!
  15. 学习spark的网站
  16. 腾讯的用Flash调用图片轮显
  17. Consumer raised exception, processing can restart if the connection factory supports it
  18. Screen使用教程
  19. 深度学习还没入门?看看深度学习三巨头的Deep Learning综述(1)
  20. Lawliet|Python学习笔记1——基础

热门文章

  1. python计算时间
  2. phpstudy Error while setting value ‘STRICT_TRANS_TABLES, NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION
  3. 测试固态参数的软件,BT测试告诉你 SSD 那些性能参数最重要
  4. Android性能优化系列之电量优化
  5. MFC模拟 Windows 文件可视化系统
  6. pandas合并文件夹下的excel文件
  7. Windows10记一次去掉桌面图标箭头引发的血案:该文件没有与之关联的应用来执行操作,请安装一个程序,若已安装程序,请在默认程序控制面板中创建关联。
  8. (加快设计)推荐一个SketchUp的3D模型库
  9. 论文阅读:DEFORMABLE DETR:DEFORMABLE DETR: DEFORMABLE TRANSFORMERSFOR END-TO-END OBJECT DETECTION
  10. 说一说你的职业规划是怎样的呢?说说未来一年、三年、五年的职业规划