Java 8 lambda初试示例详解
表达式本质上是一个匿名方法。让我们来看下面这个例子:
publicintadd(intx,inty){ returnx+y; }
转成λ表达式后是这个样子:
(intx,inty)->x+y;
参数类型也可以省略,Java编译器会根据上下文推断出来:
(x,y)->x+y;//返回两数之和
或者
(x,y)->{returnx+y;}//显式指明返回值
可见λ表达式有三部分组成:参数列表,箭头(->),以及一个表达式或语句块。
下面这个例子里的λ表达式没有参数,也没有返回值(相当于一个方法接受0个参数,返回void,其实就是Runnable里run方法的一个实现):
()->{System.out.println("HelloLambda!");}
如果只有一个参数且可以被Java推断出类型,那么参数列表的括号也可以省略:
c->{returnc.size();} publicstaticvoidmain(String[]args){ Arrays.asList("a","b","d").forEach(e->{ System.out.print(e+"\n"); }); System.out.print("\n--------------------------"); Arrays.asList("a","b","d").sort((e1,e2)->e1.compareTo(e2)); /** *可见λ表达式有三部分组成:参数列表,箭头(->),以及一个表达式或语句块。 *下面这个例子里的λ表达式没有参数,也没有返回值(相当于一个方法接受0个参数,返回void,其实就是Runnable里run方法的一个实现): *()->{System.out.println("HelloLambda!");} */ Threadt2=newThread(()->{ System.out.println("Thisisfromananonymousmethod(lambdaexp).\n"); }); t2.start(); /** *迭代LIST */ ListlistStr=newArrayList<>(); listStr.add("sss"); listStr.add("1111"); listStr.forEach(e->{ if(e.equals("sss")){ System.out.print(e); } }); }
以上所述是小编给大家介绍的Java8lambda初试,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!