深入浅出lambda表达式--零基础一分钟入门

lambda从使用上来说,第一感觉直白的理解就是,少了很多不必要的匿名回调类的写法,比如:

    public static void main(String[] args) {
        PlatformQuery query = new PlatformQuery().createDemo();
        Runnable c = () -> { System.out.println(JsonUtils.toJson(query)); };
        Thread thread = new Thread(c);
        thread.start();
    }

对着这段代码,会打印出:

{"lists":[{"nodeId":100001,"nodeName":"机构100001","companyId":"1200","createDate":"20160101"},{"nodeId":100001,"nodeName":"机构100001","companyId":"1200","createDate":"20160101"}]}

在java 8以前,如果我们要启动一个新线程,就需要创建一个新的类或者匿名实现类,实现Runnable接口中的run()方法,然后作为参数传递个Thread来完成。

使用lambda之后,就不需要新建一个实现Runaable接口的类,直接在主线程上下文中就可以完成。其中run()实现的内容就是上文的{ System.out.println(JsonUtils.toJson(query)); };,()则是run方法的签名。

从代码直观性上来说,确实简化了很多。

再比如,对于list排序,在java 8中,我们可以直接使用list.sort(Comparator),如下所示:

        query.getLists().sort(new Comparator<Platform>() {

            @Override
            public int compare(Platform a, Platform b) {
                return Integer.compare(a.getCompanyId().length(),b.getCompanyId().length());
            }

        });
        

采用lambda表达式之后,我们可以使用以下两种写法:

        Comparator<Platform> com = (Platform a, Platform b) -> { return Integer.compare(a.getCompanyId().length(),b.getCompanyId().length()); };
        query.getLists().sort(com);

        query.getLists().sort((Platform a, Platform b) -> { return Integer.compare(a.getCompanyId().length(),b.getCompanyId().length()); }); -- 这是直接使用匿名lambda表达式的例子

进一步的,lambda能够自动推导上下文,比泛型的编译时擦除(erase)还要进一步,如下:

        Comparator<Platform> com1 = (a,b) -> { return Integer.compare(a.getCompanyId().length(),b.getCompanyId().length()); };

        query.getLists().sort(com1);

        query.getLists().sort((a, b) -> { return Integer.compare(a.getCompanyId().length(),b.getCompanyId().length()); });

从上文可以看出,这比较像jquery中绑定事件的常见用法,凡事通过传递一个匿名函数来解决,对于基于Java的GUI编程或者使用future、以及spring JDBC等广泛依赖回调函数的应用来说,可以使代码去除很多不必要的skeleton代码。

时间: 2024-10-24 11:09:02

深入浅出lambda表达式--零基础一分钟入门的相关文章

教你零基础如何快速入门大数据技巧

现在是大数据时代,很多人都想要学习大数据,因为不管是就业前景还是薪资都非常的不错,不少人纷纷从其他行业转型到大数据行业,那么零基础的人也想要学习大数据怎么办呢?下面一起探讨下零基础如何快速入门大数据技巧吧. 很多人都需要学习大数据是需要有一定的基础的,编程语言就是必备的条件之一,编程语言目前热门的有:Java.Python.PHP.C/C++等等,无论是学习哪一门编程语言,总之要精细掌握一门语言是非常必须的,我们先拿应用广泛的Java说起哦. .在入门学习大数据的过程当中有遇见学习,行业,缺乏系

JAVA8学习——深入浅出Lambda表达式(学习过程)

JAVA8学习--深入浅出Lambda表达式(学习过程) lambda表达式: 我们为什么要用lambda表达式 在JAVA中,我们无法将函数作为参数传递给一个方法,也无法声明返回一个函数的方法. 在JavaScript中,函数参数是一个函数,返回值是另一个函数的情况下非常常见的,JavaScript是一门非常典型的函数式编程语言,面向对象的语言 //如,JS中的函数作为参数 a.execute(callback(event){ event... }) Java匿名内部类实例 后面补充一个匿名内

一课掌握Lambda表达式语法及作用简单入门1??

通过三个方面讲解Lambda表达式 1  什么是Lambda表达式 2  Lambda表达式基础知识 3  Lambda表达式高级扩展 分为三个层次去介绍一下Lambda表达式 重构结束后,我们针对性能问题进行讲解, 1 什么是Lambda表达式 2 Model Code As Data 3 功能接口设计及优化 4 为什么要使用Lambda表达式 Lambda表达式,也可以成为箭头函数,匿名函数,闭包 Lambda表达式体现的是轻量级函数方式编程思想 JDK8新特性 -> 左边操作参数,右侧是操

【干货】零基础30分钟让你拥有一个完整属于自己的短视频APP系统

目录 一.附言: 1 二.购买域名和购买服务器: 2 三.搭建服务器环境: 5 四.配置APP前端部分: 8 1.工具以及文件准备: 9 2.配置后端接口地址 11 3.配置APP启动图和启动图标 12 五.搭建APP后端部分 13 步骤,一步步输入并且回车. 13 1. 登录方才已经安装好的宝塔软件以及创建通信网站. 15 2. 导入数据库测试是否连通. 20 六.搭建APP后台管理端部分 24 七.打包APP下载并测试 31 一.附言: [干货]30分钟让你拥有一个完整属于自己的短视频APP

记关于 Lambda 表达式的基础写法

1 namespace MyLambda 2 { 3 public delegate void Action<in T1, in T2, in T3, in T4, in T5, in T6, in T7, in T8, in T9, in T10, in T11, in T12, in T13, in T14, in T15, in T16, in T17>(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 a

开始系列教程:Java零基础七天入门

本教程雄心勃勃,保证七天之内从零基础开始,学会java,达到什么程度呢? 很简单:达到之后可以自学android和J2EE开发的程度. 不一样的思路,敬请期待...

大数据零基础学习hadoop入门教程

1.Hadoop生态概况 Hadoop是一个由Apache基金会所开发的分布式系统集成架构,用户可以在不了解分布式底层细节情况下,开发分布式程序,充分利用集群的威力来进行高速运算与存储,具有可靠.高效.可伸缩的特点 Hadoop的核心是YARN,HDFS,Mapreduce,常用模块架构如下 ? 2.HDFS 源自谷歌的GFS论文,发表于2013年10月,HDFS是GFS的克隆版,HDFS是Hadoop体系中数据存储管理的基础,它是一个高度容错的系统,能检测和应对硬件故障 HDFS简化了文件一致

【零基础】快速入门mini爬虫框架HtmlUnit

迅速的HtmlUnit htmlunit是一款开源的web页面分析工具,理论上来说htmlunit应用于网页的自动化测试,但是相对来说更多人使用它来进行小型爬虫的快速开发.使用htmlunit进行爬虫开发不仅是其运行速度快,更重要的是此框架上手更为容易(相对于POST.selenium). 基本环境 1.java,首先你得安装好javaSDK(版本随意).编译器(eclipse) 2.HtmlUnit,项目以jar文件的形式发布,可以上官网下载最新版本(htmlunit-2.35.0-bin.z

php编程零基础如何快速入门。门头沟编程

昨天遇到一个人,说知道thinktphp,不过几年前的事了. 我先跟他讲了下,xyhcms后台功能,各个版块,以及数据库都介绍了一下. 跟他说了一个功能现场实现,说了实现方法. 然后上机操作,发现他表单提交.方法传值.页面传值.传值获取没有做,也不知道问. 甚至input标签都不知道. 这样的基础肯定面试很难通过. 如果想快速入门要么看视频.要么报个培训班.要么找个人带.视频网站建议:php.cn 原文地址:https://www.cnblogs.com/phpfangzhan/p/944097