码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【JDK 8-Lambda】3.1 Java高级核心玩转 JDK8 Lambda 表达式


    一、 什么是函数式编程 ?

    二、 什么是lambda表达式?

    1. 先看两个示例  

    A.【创建线程】

    B.【数组排序-降序】

    2. lambda表达式特性

    A. 使用场景(前提):

    B. 语法

    (params) -> expression

    C. 参数列表

    D. 方法体

    F. 好处


    一、 什么是函数式编程 ?

    • 将一个函数(也称“行为”)作为一个参数进行传递

    • 面向对象编程是对数据的抽象(各种各样的POJO类),而函数式编程则是对行为的抽象 (将行为作为一个参数进行传递)

    • 支持版本:JDK 8 及以上

    二、 什么是lambda表达式?

    1. 先看两个示例  

    A.【创建线程】
    • jdk8之前

    1. new Thread(new Runnable() {
    2. @Override
    3. public void run() {
    4. System.out.println("【创建线程】jdk8之前");
    5. }
    6. }).start();
    • jdk8之后 Lambda表达式

    new Thread(()-> System.out.println("【创建线程】jdk8之后 Lambda表达式")).start();
    B.【数组排序-降序】
    •  jdk8之前

    1. List list = Arrays.asList("aaa", "bbb", "ccc", "ddd");
    2. Collections.sort(list, new Comparator() {
    3. @Override
    4. public int compare(String o1, String o2) {
    5. return o1.compareTo(o2);
    6. }
    7. });
    8. System.out.println("jdk8之前写法:升序》");
    9. for (String s : list) {
    10. System.out.println( s);
    11. }
    • jdk8之后 Lambda表达式

    1. Collections.sort(list, (a, b) -> b.compareTo(a));
    2. System.out.println("jdk8之后lambda写法:降序》");
    3. for (String s : list) {
    4. System.out.println(s);
    5. }

    2. lambda表达式特性

    A. 使用场景(前提):
    • 一个接口中只包含一个方法,则可以使用Lambda表达式

    • 这样的接口称之为"函数接口"

    B. 语法
    (params) -> expression
    • 第一部分为括号内用 逗号分隔的形式参数,参数是函数式接口里面方法的参数

    • 第二部分为一个箭头符号:->;

    • 第三部分为 方法体,可以是表达式和代码块

    C. 参数列表
    • 括号中参数列表的数据类型可以省略不写

    • 括号中的参数只有一个,那么参数类型和()都可以省略不写

    D. 方法体
    • 如果{}中的代码只有一行,无论有返回值,可以省略 {},return,分号

    • {},return,分号 要一起省略

    1. //两种写法等效
    2. Collections.sort(list, (a, b) -> b.compareTo(a));
    3. Collections.sort(list, (a, b) -> {
    4. return b.compareTo(a);
    5. });

    F. 好处

    • Lambda 表达式的实现方式在本质是以匿名内部类的方式进行实现

    • 重构现有髓肿代码,更高的开发效率,尤其是集合Collection操作
       

  • 相关阅读:
    基于php的汇业家具商城
    人工智能与养老:技术如何助力舒适晚年
    好消息!北京、珠海PMP考试时间来啦
    Linux-计划任务at和cron
    IP地址的分类,五分类编制CIDR以及子网的划分和子网掩码
    Java 对象排序(Object Ordering)
    ROS2下使用TurtleBot3-->SLAM导航(仿真)RVIZ加载不出机器人模型
    IPWorks Zip Delphi 流式压缩组件
    FineBI 的过滤类型及应用场景
    计算机组成原理---第七章输入输出系统---I/O系统基本概念,外部系统---选择题
  • 原文地址:https://blog.csdn.net/ladymorgana/article/details/132909074
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号