Lambda表达式
1.Lambda表达式的本质:作为函数式接口的实例
2.格式:
->:Lambda操作符 或 箭头操作符
->左边:Lambda形参列表(接口中抽象方法的形参列表)
->右边:Lambda体(重写的抽象方法的方法体)
3.Lambda表达式的使用:
->左边:Lambda形参列表的参数类型可以省略:如果Lambda形参列表只有1个参数,其一对()也可以省略。
->右边:Lambda体使用一对{}包裹,如果Lambda体只有一条执行语句(可能时return语句),可以省略{}及return关键字
函数式接口(只有一个抽象方法的接口)


public class LambdaTest {
@Test
public void test() {
MyInterface mi = new MyInterface() {
@Override
public String method(String arg) {
return arg;
}
};
String str = mi.method("java学习中。");
System.out.println(str);
//lambda表达式的方式
MyInterface mi2 = s -> s;
String str2 = mi2.method("java学习中。");
System.out.println(str2);
}
@Test
public void test2() {
List<String> list = Arrays.asList("a", "bb", "ccc", "dddd");
List<String> list1 = filterString(list, new Predicate<String>() {
@Override
public boolean test(String s) {
return s.length() > 2;
}
});
System.out.println(list1);//[ccc, dddd]
//lambda表达式的方式
List<String> list2 = filterString(list, s -> s.length() > 2);
System.out.println(list2);
}
public List<String> filterString(List<String> list, Predicate<String> pre) {
List<String> list1 = new ArrayList<>();
for (String s : list) {
if (pre.test(s)) {
list1.add(s);
}
}
return list1;
}
}

浙公网安备 33010602011771号