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表达式的标准语法包括以下内容:
1. 用括号括起来的形式参数的逗号分隔列表。在这种情况下(String m, String n)
2. 箭头标记 ->
3. 主体,由单个表达式或语句块组成。在这种情况下,它是一个单一表达式-Integer.compare(m.length(), n.length())
Output:
[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. Lambda表达式中的多行代码
如果代码不能一行编写,则可以将其括在{}中。现在,该代码应明确包含return语句。
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));
Output:
[program, creek, java, site, is, a]
4.推断类型的单参数
当可以推断类型时,对于单参数lambda表达式可以省略括号。
String[] arr = { "program", "creek", "is", "a", "java", "site" };
Stream stream = Stream.of(arr);
stream.forEach(x -> System.out.println(x));
Output:
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 (); }
最后,开发这么多年我也总结了一套学习Java的资料与面试题,如果你在技术上面想提升自己的话,可以关注我,私信发送领取资料或者在评论区留下自己的联系方式,有时间记得帮我点下转发让跟多的人看到哦。