博客
关于我
Lambda表达式_hehe.employment.7.3
阅读量:390 次
发布时间:2019-03-05

本文共 2770 字,大约阅读时间需要 9 分钟。

7.6 函数式编程思想概述

函数式编程思想强调“做什么”而不是“怎么做”。与面向对象编程相比,函数式编程更注重结果的输出,而不是对象的形式。

  • 面向对象编程的核心:通过对象的方法完成任务,强调“怎么做”。
  • 函数式编程的核心:关注任务的结果,强调“做什么”。

7.7 冗余的Runnable代码

在Java中,创建Runnable接口的实现类并传递给Thread类的start方法虽然可行,但代码冗余。为了简化代码,可以使用匿名内部类或Lambda表达式。

示例代码:

public class Demo01Runnable {    public static void main(String[] args) {        // 创建Runnable接口的实现类对象        RunnableImpl run = new RunnableImpl();        // 创建Thread类对象,构造方法中传递Runnable接口的实现类        Thread t = new Thread(run);        // 调用start方法开启新线程        t.start();        // 使用匿名内部类实现Runnable        Runnable r = new Runnable() {            @Override            public void run() {                System.out.println(Thread.currentThread().getName() + " 新线程创建了");            }        };        new Thread(r).start();    }}

代码分析:

  • Thread类:需要接收Runnable接口作为参数,Runnable接口定义了抽象的run方法。
  • 匿名内部类:虽然繁琐,但避免了定义具体的Runnable实现类。
  • Lambda表达式:更简洁地实现Runnable接口,直接传递代码块。

7.8 编程思想转换

函数式编程的核心是将任务的执行结果传递给系统,而不是关注任务的具体实现方式。

  • “做什么”的本质:传递代码块,让系统执行。
  • “怎么做”的形式:虽然需要遵循面向对象的语法,但最终目的是实现任务。

生活举例:

从北京到上海可以选择高铁、飞机等不同方式,核心是到达终点,而不是选择什么方式。

Java 8的Lambda表达式为我们提供了更灵活的方式来实现函数式编程。

7.9 体验Lambda的更优写法

Lambda表达式可以显著简化代码,例如:

public class demoRunnable {    public static void main(String[] args) {        Runnable r = () -> {            System.out.println(Thread.currentThread().getName() + " 新线程创建了");        };        new Thread(r).start();    }}

7.10 匿名内部类的优缺点

  • 优点:避免定义具体类,简化代码。
  • 缺点:语法复杂,难以阅读和维护。

7.11 Lambda表达式的标准格式

Lambda表达式的格式为:

(参数列表) -> { 业务逻辑代码 }
  • 参数列表:括号内的参数类型和数量。
  • 箭头:传递参数到代码块。
  • 代码块:实现具体的业务逻辑。

7.12 Lambda表达式无参无返回值练习

创建一个Cook接口:

public interface Cook {    void makeFood();}

使用Lambda实现:

public class demoCook {    public static void main(String[] args) {        invokeCook(() -> {            System.out.println("吃饭了");        });    }    public static void invokeCook(Cook cook) {        cook.makeFood();    }}

7.13 Lambda表达式有参有返回值练习

对Person数组进行排序:

public class demoPerson {    public static void main(String[] args) {        Person[] arr = {            new Person("a", 3),            new Person("b", 1),            new Person("c", 1)        };        Arrays.sort(arr, (o1, o2) -> o1.getAge() - o2.getAge());        for (Person p : arr) {            System.out.println(p);        }    }}

7.14 Lambda表达式有参有返回值自定义接口练习

创建一个Calculator接口:

public interface Calculator {    int calc(int a, int b);}

使用Lambda实现:

public class demoCalculator {    public static void main(String[] args) {        invokeCalc(10, 30, (a, b) -> a + b);    }    public static void invokeCalc(int a, int b, Calculator c) {        int sum = c.calc(a, b);        System.out.println(sum);    }}

7.15 Lambda省略格式与使用前提

Lambda表达式可以省略以下内容:

  • 参数类型:省略括号内的类型描述。
  • 返回类型:省略方法返回值。
  • 代码块:省略{}内的代码和分号。

示例:

invokeCook(() -> System.out.println("吃饭了"));invokeCalc(120, 130, (a, b) -> a + b);

通过合理使用Lambda表达式,可以显著简化代码,同时提升代码的可读性和维护性。

转载地址:http://xgrwz.baihongyu.com/

你可能感兴趣的文章
plsql 安装后database下拉没有东西
查看>>
PLSQL_Oracle PLSQL内置函数大全(概念)
查看>>
PLSQL_案例优化系列_体验逻辑结构如何影响SQL优化(案例3)
查看>>
PLSQL中INDEX BY TABLE的 DELETE操作
查看>>
plsql学习笔记---plsql相关概念,以及基础结构
查看>>
plsql数据库异常---plsql 登录后,提示数据库字符集(AL32UTF8)和客户端字符集(ZHS16GBK)不一致
查看>>
plsql查询乱码问题解决
查看>>
PLSQL的DBMS_GETLINE
查看>>
quartz简单demo,教你最快使用quartz
查看>>
PlutoSDR学习笔记(一)—函数API手册
查看>>
Quartz安装包中的15个example
查看>>
Quartz学习总结(2)——定时任务框架Quartz详解
查看>>
pm2 start命令中的json格式详解
查看>>
pm2启动报错
查看>>
pm2通过配置文件部署nodejs代码到服务器
查看>>
Unknown character set: 'utf8mb4'
查看>>
PML调用PDMS内核命令研究
查看>>
PMM安装-第一篇
查看>>
PMP知识要点(第九章)
查看>>
PNETLab 镜像包官方下载太慢?不急,最新版本PNET_4.2.10分享!
查看>>