我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Java的Lambda表达式实例分析

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Java的Lambda表达式实例分析

这篇“Java的Lambda表达式实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java的Lambda表达式实例分析”文章吧。

    1、简介

    首先Lambda表达式是属于Java8的 一个新特性,提供Java编程中对于函数式编程的支持,有助于代码的简洁,可以取代大半部分的匿名函数,尤其对于集合的遍历和集合的操作,极大的简化了代码。

    Lambda表达式的主体:

    Java的Lambda表达式实例分析

    函数式接口:

    注意: Lambda表达式一定要配合函数式接口一起使用,所谓函数式接口,就是接口中只有一个抽象方法的接口就是函数式接口,我们可以自定义,JDK也内置了大量的函数式接口。

    @FunctionalInterface注解修饰了接口,那这个接口就是函数式接口,只能有一个方法,下面就是一个函数式接口:

    @FunctionalInterfacepublic interface MyInteface {    void eat();}

    如果不加@FunctionalInterface**注解,你在接口里面只写一个抽象方法也可以认为是函数式接口:

    public interface MyInteface {    void eat();}

    这样也是可以的。

    函数式接口只有一种情况不只有抽象方法,那就是可以继承Object类的方法:

    @FunctionalInterfacepublic interface MyInteface3 {    void eat();    @Override    String toString();        @Override    int hashCode();}

    2、Lambda表达式的使用:

    1、在普通方法内的使用

    Student类:

    @FunctionalInterfacepublic interface Student {    void eat();}

    测试类:

    public class Test {    public static void main(String[] args) {        Student stu = new Student() {            //普通方法,重写并使用            @Override            public void eat() {                System.out.println("我是学生");            }        };        stu.eat();        //lambda表达式写法:        //参数1:重写了Student接口中唯一的那个无参数的eat抽象方法做了具体的实现,所以重写不 需要署名        //参数2:-> 表达式 固定的        //参数3:{具体的实现} 对Student接口中唯一的eat方法做了具体的实现            Student stu2 = () -> {                System.out.println("学生吃饭");            };        stu2.eat();            }}

    输出:

    我是学生
    学生吃饭

    2、带参方法的使用

    Student类:

    @FunctionalInterfacepublic interface Student {    void eat(String food);}

    测试类:

    public class Test {    public static void main(String[] args) {        //lambda重写Student接口唯一的有参方法:        Student stu2 = (foodName)->{            System.out.println("学生在吃"+foodName);        };        stu2.eat("肉");    }}

    //输出:学生在吃肉

    3、Lambda表达式实现多线程

    之前在多线程(1)的那篇文章内有介绍了创建多线程的方法,这里就使用lambda来创建线程:

    public class Test {    public static void main(String[] args) {        Thread t = new Thread(() -> {            System.out.println("这个线程是由lambda来创建的");        });        t.start();    }}

    4、Lambda表达式操作运算

    我们使用lambda来操作运算可以少很多代码:

    函数式接口:

    @FunctionalInterfacepublic interface Calculator<T> {    T operation(T v1,T v2);}

    测试类:

    public class Test {    //计算方法    public static Integer operator(Integer v1,Integer v2,Calculator<Integer> calculator){        return calculator.operation(v1, v2);    }    public static void main(String[] args) {        //使用lambda表达式:        //这里的意思就是传入两个参数,返回运行后的值        int add = Test.operator(5,10,(x,y)->{            return x+y;        });        //简写:可以少写很多代码,比上面更简介了        int num1 = Test.operator(5,10,(x,y)->x+y);        int num2 = Test.operator(10,5,(x,y)->x-y);        System.out.println(add);        System.out.println(num1);        System.out.println(num2);    }}

    输出:

    15 、15 、5

    5、Lambda表达式方法引用

    有时候我们不是必须要要重写接口的方法来做具体的实现,我们如果有存在的方法能来实现,也可以通过方法 引用的方式来引用已经存在的方法做接口中方法具体的实现,这样的好处就是代码复用,比如下面这样:

    函数式接口:

    public interface ResultOneParam {    int method(int a);}

    测试类:

    public class Test {    public int addTo(int a){        return  a+10;    }    public  static int addTo2(int a){        return  a+10;    }    public static void main(String[] args) {        //lambda重写了method方法        ResultOneParam lambda1=(a)->a+10;        //方法引用:就是在Test里面的addTo2方法用来替代method被重写的方法        ResultOneParam lambda2= Test::addTo2;        int result1= lambda2.method(9);        System.out.println(result1);        //方法引用 ::引用现成的方法来替代方法重写,这样可以方法重用        Test test=new Test();        ResultOneParam lambda3=test::addTo;        int result2= lambda3.method(9);        System.out.println(result1);    }}

    6、Lambda表达式对集合的使用

    当然Lambda对集合的操作也是很方便的,可以少些很多代码:

    public class Test {    public static void main(String[] args) {        List<Integer> list = Arrays.asList(5,1,3,4,5,0,9,7,0,1,5);        //lambda表达式遍历集合,重写了Consumer接口的方法        list.forEach((element)->{            System.out.println(element);        });        //简写:        list.forEach(element-> System.out.println(element));        //lambda表达式方法引用,用于遍历输出list集合:        list.forEach(System.out::print);        //输出list的偶数:        list.forEach(element->{            if(element%2==0){                System.out.println(element);            }        });    }}

    以上就是关于“Java的Lambda表达式实例分析”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网行业资讯频道。

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

    Java的Lambda表达式实例分析

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档

    猜你喜欢

    Java的Lambda表达式实例分析

    这篇“Java的Lambda表达式实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java的Lambda表达式实例分析
    2023-06-29

    Java实例分析Lambda表达式

    这篇文章主要介绍“Java实例分析Lambda表达式”,在日常操作中,相信很多人在Java实例分析Lambda表达式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java实例分析Lambda表达式”的疑惑有所
    2023-06-30

    Java的Lambda表达式使用实例分析

    这篇文章主要讲解了“Java的Lambda表达式使用实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java的Lambda表达式使用实例分析”吧!Lambada 简介lambda 表达
    2023-07-05

    Linq lambda表达式的示例分析

    小编给大家分享一下Linq lambda表达式的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Linq lambda表达式了解过C# 3.0的新特性的话应
    2023-06-17

    Java Lambda 表达式源码解析

    Java Lambda 源码分析问题:Lambda 表达式是什么?JVM 内部究竟是如何实现 Lambda 表达式的?为什么要这样实现?一、基本概念1、Lambda 表达式下面的例子中,() -> System.out.println("1") 就是一个 La
    2021-12-25

    Java8中Lambda表达式与函数式接口的示例分析

    这篇文章将为大家详细讲解有关Java8中Lambda表达式与函数式接口的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Java8被称作Java史上变化最大的一个版本。其中包含很多重要的新特性,最核
    2023-05-30

    Java表达式相关问题实例分析

    本篇内容介绍了“Java表达式相关问题实例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Code Golf中的一位挑战者在比赛中写了下面
    2023-06-02

    Java正则表达式使用实例分析

    这篇文章主要介绍“Java正则表达式使用实例分析”,在日常操作中,相信很多人在Java正则表达式使用实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java正则表达式使用实例分析”的疑惑有所帮助!接下来
    2023-06-29

    Java中正则表达式的示例分析

    这篇文章主要介绍了Java中正则表达式的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前几天线上一个项目监控信息突然报告异常,上到机器上后查看相关资源的使用情况,发现
    2023-06-15

    Linux的正则表达式实例分析

    今天小编给大家分享一下Linux的正则表达式实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。正则表达式(regular
    2023-06-27

    Java 8的Lambda表达式详解

    本篇内容介绍了“Java 8的Lambda表达式详解”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!功能接口只包含一个方法的接口被称为功能接口
    2023-06-17

    编程热搜

    • Python 学习之路 - Python
      一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
      Python 学习之路 - Python
    • chatgpt的中文全称是什么
      chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
      chatgpt的中文全称是什么
    • C/C++中extern函数使用详解
    • C/C++可变参数的使用
      可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
      C/C++可变参数的使用
    • css样式文件该放在哪里
    • php中数组下标必须是连续的吗
    • Python 3 教程
      Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
      Python 3 教程
    • Python pip包管理
      一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
      Python pip包管理
    • ubuntu如何重新编译内核
    • 改善Java代码之慎用java动态编译

    目录