jdk8 lambda表达式语法(->) 和jdk7的比较

原创 2015年11月18日 18:58:52

Lambda初体验

下面进入本文的正题–lambda表达式。首先我们看一下什么是lambda表达式。以下是维基百科上对于”Lambda expression”的解释:

 a function (or a subroutine) defined, and possibly called, without being bound to an identifier。

简单点说就是:一个不用被绑定到一个标识符上,并且可能被调用的函数。这个解释还不够通俗,lambda表达式可以这样定义:一段带有输入参数的可执行语句块。先来看看jdk7和jdk8 lambda的表达式的不同实现:

1. 例子1

jdk8 lambda表达式:

<pre name="code" class="java">List<String> names = new ArrayList<>();
Collections.sort(names, (o1, o2) -> o1.compareTo(o2));
or
<pre name="code" class="java" style="color: rgb(102, 102, 102); font-size: 14px; line-height: 15.4px;">names<span style="line-height: 15.4px; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace;">.sort((o1, o2) -> o1.compareTo(o2));</span>





jdk7:

List<String> names = <span style="line-height: 15.4px; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace;">new ArrayList<>();</span>

Collections.sort(names, new Comparator<String>() {
  @Override
  public int compare(String o1, String o2) {

    return o1.compareTo(o2);

  }

});
or 
<pre name="code" class="html" style="color: rgb(102, 102, 102); font-size: 14px; line-height: 15.4px;"><pre name="code" class="html" style="color: rgb(102, 102, 102); font-size: 14px; line-height: 15.4px;">names<span style="line-height: 15.4px; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace;">.sort(new Comparator<String>() {</span>
@Override public int compare(String o1, String o2) { return o1.compareTo(o2); }});




上面两段代码分别是:使用jdk8 lambda表达式(->)来排序和使用jdk7匿名内部类来排序。

2.例子2

jdk8 lambda表达式:
    btn.setOnAction( 
        event -> System.out.println("Hello World!") 
    );  


jdk7:
   btn.setOnAction(new EventHandler<ActionEvent>() { 
        @Override
        public void handle(ActionEvent event) { 
            System.out.println("Hello World!"); 
        } 
    }); 



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

JDK8新特性之Lambda表达式

第一次是接触Lambda表达式是在TypeScript中(javaScript的超集中),当时是为了让TypeScript的this方法外而不是本方法内所使用的。使用过后突然想到Lambda不是JDK...
  • canot
  • canot
  • 2016-10-28 00:50
  • 1273

JDK8 Lambda表达式教程

1. 什么是λ表达式λ表达式本质上是一个匿名方法。让我们来看下面这个例子:public int add(int x, int y) { return x + y; }转成λ表达式后是这个样子:...

JDK8的随笔(04)_Lambda表达式扩展之Method References

Method References 方法参照 本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块...

JDK8的随笔(01)_Lambda表达式是个神马东东,初尝禁果

Lambda表达式先写写背景和最基本的东东,泛型加入和各种循环的复杂模式后面再慢慢深入。需要看JDK8的背景虽然网上的介绍很多,但是不如自己读一下document后来得正宗。 说一下缘由,突发的这个...

jdk8中的lambda表达式

什么是lambda表达式?lambda表达式又称闭包,允许将一个函数当作方法的参数来传递(传递函数)或者说把代码当作数据来传递。 长啥样?如下两个示例,示例1为非lambda表达式实现的形态(多行代码...

JDK8-Lambda表达式(一)

Lambda语法简单,效率高,直接实战,不哔哔废话!!!

JDK8 lambda表达式

JDK8已经出来一段时间了,在此讲讲lambda表达式,lambda表达式可以理解为是对匿名对象的简化使用,可以将lambda表达式作为参数(这里的参数其实是一种接口类型)传递给方法,那在了解lamb...

jdk8新特性 lambda表达式详解

从这边博客中你可以了解到: - Java匿名内部类 - jdk se 8中lambda表达式代替匿名内部类。 - lambda表达式的语法 - 使用java.util.function.Predic...

通过字节码分析JDK8中Lambda表达式编译及执行机制

关于Lambda字节码相关的文章,很早之前就想写了,[蜂潮运动]APP 产品的后端技术,能快速迭代,除了得益于整体微服架构之外,语言层面上,也是通过Java8的lambda表达式的运用以及rxJava...

jdk8新特性-亮瞎眼的lambda表达式

jdk8之前,尤其是在写GUI程序的事件监听的时候,各种的匿名内部类,大把大把拖沓的代码,程序毫无美感可言!既然java中一切皆为对象,那么,就类似于某些动态语言一样,函数也可以当成是对象啊!代码块也...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)