它属于“结构化编程”的一种,主要思想是把运算过程尽量写成一系列嵌套的函数调用。函数式编程比面向对象的优势就是粒度更小,生命周期更短。减少bug的有效途径就是减少变量的生命周期,缩小模块的粒度。
-------------------------------------------------------------------------------------摘自函数式编程思想
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 createDepartment() {
List departments = new ArrayList();
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 initUsers = new ArrayList();
@BeforeAll
public static void init() {
for (int i = 0; i < 10; i++) {
initUsers.add(createUser());
}
}
测试lambda表达式输出打印
@Test
public void Test() {
initUsers.forEach(user -> System.out.println(user.toString()));
}
Lambda省略规则
- 参数类型可以省略
- 方法体只有一句代码时大括号return和唯一一句代码的分号可以省略
- 方法只有一个参数时小括号可以省略
- 以上这些规则都记不住也可以省略不记



