一、Lambda 表达式的主要改进点

Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性。
Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。
使用 Lambda 表达式可以使代码变的更加简洁紧凑。

二、以下是lambda表达式的重要特征

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

三、使用 Lambda 表达式需要注意以下两点:
Lambda 表达式主要用来定义行内执行的方法类型接口,例如,一个简单方法接口。在上面例子中,我们使用各种类型的Lambda表达式来定义MathOperation接口的方法。然后我们定义了sayMessage的执行。
Lambda 表达式免去了使用匿名方法的麻烦,并且给予Java简单但是强大的函数化的编程能力。

四、使用lambda表达式一些实例
首先,先定义一个Employee类,然后来实现lambda的一些特性。
代码如下:

package com.tp.testjava8;
//employee(雇员表)
public class Employee {private String name;private int age;private double salary;//工资/*** 无参构造器*/public Employee() {}/*** 全参构造器* @param name* @param age* @param salary*/public Employee(String name, int age, double salary) {this.name = name;this.age = age;this.salary = salary;}@Overridepublic String toString() {return "Employee{" +"name='" + name + '\'' +", age=" + age +", salary=" + salary +'}';}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public double getSalary() {return salary;}public void setSalary(double salary) {this.salary = salary;}
}

定义一个接口类MyPredicate,,T表示泛型,也就是匿名内部类,然后在定义两个类去实现该类里面的方法。
代码如下所示:

package com.tp.testjava8;public interface MyPredicate<T> {public boolean test(T t);
}

定义的方法1:代码如下所示

package com.tp.testjava8;public class FilterEmployeeBySalary implements MyPredicate<Employee>{public boolean test(Employee employee) {return employee.getSalary()>=5000;}
}

定义的方法1:代码如下所示

package com.tp.testjava8;public class FilterEmployeeByAge implements MyPredicate<Employee> {public boolean test(Employee employee) {return employee.getAge() >= 35;}
}

写好之后,去测试,写一个测试的类
代码如下所示:

package com.tp.testjava8;import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;public class TestLambda {static List<Employee> employee = Arrays.asList(new Employee("张三",18,9999.99),new Employee("李四",38,5555.55),new Employee("王五",50,6666.66),new Employee("赵六",16,3333.33),new Employee("田七",8,7777.77));/*    public static void main(String[] args) {List<Employee> list = filterEmployees(employee);for (Employee emp:list) {System.out.println(emp.toString());}}*///原始方式://需求:获取当前公司中年龄大于35的员工public static List<Employee> filterEmployees(List<Employee> list){List<Employee> emps = new ArrayList<Employee>();for (Employee emp:list){if(emp.getAge() >= 35){emps.add(emp);}}return emps;}//需求2:获取当前公司中,工资大于5000的员工
/*    public static void main(String[] args) {List<Employee> employees = filterEmployee(employee, new FilterEmployeeBySalary());for (Employee emp:employees) {System.out.println(emp);}}*//*public static List<Employee> filterEmployees2(List<Employee> list){List<Employee> emps = new ArrayList<Employee>();for (Employee emp:list){if(emp.getSalary() >= 5000){//就这里改变emps.add(emp);}}return emps;}*///优化方式1:策略设计模式 定义接口,用用类实现接口,调用类public static List<Employee> filterEmployee(List<Employee>list , MyPredicate<Employee> mp){List<Employee> emps = new ArrayList<Employee>();for (Employee emp : list){if(mp.test(emp)){emps.add(emp);}}return emps;}//优化方式2:匿名内部类
/*    public static void main(String[] args) {List<Employee> list = filterEmployee(employee, new MyPredicate<Employee>() {public boolean test(Employee t) {return t.getAge() >= 35;}});for (Employee emp : list){System.out.println(emp.toString());}List<Employee> list1 = filterEmployee(employee, new MyPredicate<Employee>() {public boolean test(Employee t) {return t.getSalary() >= 5000;}});for (Employee emp:list1){System.out.println(emp.toString());}}*///OOP + FP//优化方式3: Lambda 表达式:public static void main(String[] args) {List<Employee> list = filterEmployee(employee, (e) -> e.getAge() >= 35);for (Employee emp : list){System.out.println(emp);}List<Employee> employees = filterEmployee(employee, (e) -> e.getSalary() >= 5000);for (Employee emp : employees){System.out.println(emp);}}//Sream//Jquery//$(".select").hide().stop()//"aa" .map(" ").reduce()}

以上是一些简单的lambda函数的实现,如有不对的,请留言,多多指教

【Java】Java 8 新特性-----Lambda 表达式相关推荐

  1. java thread lambda_Java8新特性--Lambda表达式

    从java8出现以来lambda是最重要的特性之一,它可以让我们用简洁流畅的代码完成一个功能. 很长一段时间java被吐槽是冗余和缺乏函数式编程能力的语言,随着函数式编程的流行java8种也引入了 这 ...

  2. 【Java】Java8新特性Lambda表达式和Stream API

    Lambda表达式是实现支持函数式编程技术的基础. 函数式编程与面向对象编程:函数式编程将程序代码看作数学中的函数,函数本身作为另一个函数参数或返回值,即高阶函数.而面向对象编程按照真实世界客观事物的 ...

  3. java lambda表达式详解_Java8新特性Lambda表达式详解

    课程目标: 通过本课程的学习,详细掌握Java8新特性之Lambda表达式: 适用人群:有Java基础的开发人员: 课程概述:从Java 8出现以来lambda是最重要的特性之一,它可以让我们用简洁流 ...

  4. Java 8 新特性 lambda表达式

    / Created by Manager on 2021/4/1. Java 8 新特性 lambda表达式 StreamAPI 新日期 新注解 */ 视频连接 1https://www.bilibi ...

  5. Java 8 新特性Lambda 表达式

    Java 8 新特性Lambda 表达式 一.常用循环 二.匿名内部类 三.排序集合 四.循环打印对象 五.根据条件修改 六.排序 七.求和 八.统计方法 九.材料 一.常用循环 public cla ...

  6. java新特性lambda表达式快速入门

    文章目录 序 常规写法 写法一:新建类并实现该接口 写法二:使用匿名函数 lambda写法 写法一:lambda常规写法 写法二:lambda简写 中场疑问 lambda的方法引用 写法一 写法二 练 ...

  7. Java8新特性----Lambda表达式详细探讨

    Java8新特性 Lambda表达式 入门演示 案例1 如何解决 cannot be cast to java.lang.Comparable问题? 案例2 优化方式一 : 策略设计模式 优化方式二: ...

  8. C++11新特性——λ(lambda)表达式详解

    C++11新特性--λ(lambda)表达式 C++11中引入了λ表达式,它可以用来定义一个内联(inline)的函数,作为一个本地的对象或者一个参数.有了λ表达式,我们可以很方便的使用stl标准库. ...

  9. JDK1.8新特性Lambda表达式入门

    摘要:此篇文章主要介绍 Java8 Lambda 表达式产生的背景和用法,以及 Lambda 表达式与匿名类的不同等.本文系 OneAPM 工程师编译整理. Java 是一流的面向对象语言,除了部分简 ...

  10. Java8新特性——lambda表达式

    什么是lambda表达式? Lambda 表达式是Java 8 的新特性,是一种新的编程语法.lambda语义简洁明了,性能良好,是Java 8 的一大亮点.废话不多说,我们来看个例子. 从内部类到l ...

最新文章

  1. Await, and UI, and deadlocks! Oh my!
  2. 安卓ttf格式的字体包_多看字体包优化篇
  3. 字符串比较--小问题大智慧
  4. python——变量的类型、不同类型变量的计算、变量的输入以及格式化输出
  5. 把github转至gitee
  6. 17计算机接收调剂学校,2017年计算机科学与技术学院接收非全日制硕士研究生调剂.PDF...
  7. wikioi 1306 机智Trie树
  8. win7配置iis 出现:HTTP 错误 403.14 - Forbidden Web 服务器被配置为不列出此目录的内容...
  9. Spark中使用Dataset的groupBy/agg/join/broadcast hasjoin/sql broadcast hashjoin示例(java api)
  10. 关于微信隐藏分享按钮的心得
  11. FL Studio最新汉化免费下载 水果音乐制作软件
  12. 一文精讲Wireshark的抓包和分析
  13. 三线表的制作(硕士毕业论文WORD中)
  14. ai人工智能写歌词app,ai写歌词网站,ai作词软件创作版,作词人的辅助工具,押韵助手
  15. 注册表修复工具+强制卸载工具
  16. 普中51单片机的贪吃蛇教程
  17. HTML 和文字有关的标签(2)
  18. Python数据展示之雷达图
  19. 离散化:两种离散化方式详解
  20. 获取google Map API Key方法

热门文章

  1. pandas 计算工具
  2. Oracle的where子句
  3. java 指定字段排序规则_Java之对List里面的元素实现按指定字段排序的方法
  4. php上传下载excel,PHPExcel 上传下载的示例代码
  5. 转载 | Systemd的使用简介
  6. CVE-2020-16875:Microsoft Exchange RCE复现
  7. Git学习总结(21)——Git 提交规范总结
  8. Spring Cloud与微服务学习总结(5)——认证鉴权与API权限控制在微服务架构中的设计与实现(三)
  9. css帧动画点击执行一次_CSS动画深入浅出
  10. android 视频编码vfr cfr,[转载]VFR的源转换CRF输出 批处理