Android交流qq群号 29552133
这篇文章只包含lambda表达式的基础内容。
主要包括,lambda表达式的语法。
不涉及的Stream API及详细使用lambda表达式使用方式。
语法
- 参数 -> 表达式
- 如果负责计算的表达式无法一次写完,则可以使用方法的形式编写。
- 如果表达式没有参数,参数部分可以提供一个空的"()",类似不含参数的方法。
- 如果参数的类型是可被推导的,则可以省略参数的类型
- 如果参数只有一个,并且参数的类型可以被推导出来,可以省略"()"以及参数类型,只包含一个参数名。
- 类静态方法
1. (String first,String second) -> Integer.compare(first.length(),second.length())
2. (String first,String second) -> {
if(first.length() < second.length()) return -1;
else if(first.length() > second.length()) return 1;
else return 0;
}
3. ()->System.out.println("不需要参数的lanmbda表达式")
4. Comparator<String> comp =
(first,second)//同(String first,String second)一样,只是因为类型可推导,所以不用写类型
-> Integer.compare(first.length(),second.length())
5. EventHandler<ActionEvent> listener =
event ->//等同于(event),(ActionEvent event)
System.out.println("省略参数类型及小括号")
6. String[] strings = new String[];
Arrays.asList(strings).forEach(System.out::println);
方法引用
- 对象::实例方法
- 类::静态方法
- 类::实例方法
1,2两种情况等同于
System.out::println 等同于 System.out.println(x)
Math::pow 等同于 Math.pow(x,y)
第3种情况中,第一个参数回成为执行方法的对象。
String::compareToIgnoreCase 等同 (x,y) -> x.compareToIgnoreCase(y)
网友评论