java单个变量的表达式_java中使用Lambda表达式的5种语法

1,标准写法

思考下述情况:

String[] arr = {"program", "creek", "is", "a", "java", "site"};

Arrays.sort(arr, (String m, String n) -> Integer.compare(m.length(), n.length()));

System.out.println(Arrays.toString(arr));

lambda表达式的标准写法由下面几点构成:

以逗号分隔,以()关闭的形参:(Dog m, Dog n)

箭头标记:->

主体部分则是一个单表达式或者声明代码块。如下是单表达式形式:Integer.compare(m.getWeight(), n.getWeight())

输出:

[a, is, java, site, creek, program]

2,参数类型可以推断

如果参数的类型可以根据上下文推断出来,则可以省略掉类型。

在上面的代码中,参数 m 与 参数 n 可以推测出来是String类型,所以可以省略。这样会让代码变得更加简洁,并且也更像是一个lambda表达式。

String[] arr = { "program", "creek", "is", "a", "java", "site" };

Arrays.sort(arr, (m, n) -> Integer.compare(m.length(), n.length()));

System.out.println(Arrays.toString(arr));

3,存在多行代码

如果sort() 里面的代码一行写不下的话,可以多行,但需要{} 括起来。而且代码应该有明确的返回语句。

String[] arr = { "program", "creek", "is", "a", "java", "site" };

Arrays.sort(arr, (String m, String n) -> {

if (m.length() > n.length())

return -1;

else

return 0;

});

System.out.println(Arrays.toString(arr));

输出:

[program, creek, java, site, is, a]

4,单个参数并可推断类型

Parenthesis can be omitted for single parameter lambda expression when types can be inferred.

单个参数的lambda表达式,在参数类型可以推断出来的时候,可以省略参数 “x” 的括号。

String[] arr = { "program", "creek", "is", "a", "java", "site" };

Stream stream = Stream.of(arr);

stream.forEach(x -> System.out.println(x));

输出:

a

is

java

site

creek

program

5,方法引用

利用方法引用,上面的代码也可以被写成如下形式:

Stream stream = Stream.of(arr);

stream.forEach(System.out::println);

6,没有参数

当一个参数都没有的时候,仍然可以使用lambda表达式。如下:

() -> {for(int i=0; i<10; i++) doSomthing();}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值