Java中的Lambda表达式

1.基本使用

代码:

Main.java

1
2
3
4
5
6
7
8
9
10
11
12
13
package com.laisc;

public class Main {
public static void main(String[] args) {

MyFunction f = s -> System.out.println("输入的是:" + s);
f.doSomething("你好");

MyFunction2 f2 = v1 -> v1+1;
System.out.println(f2.doSomething(9));

}
}

MyFunction.java

1
2
3
4
5
6
7
package com.laisc;


@FunctionalInterface //非必须
public interface MyFunction {
void doSomething(String str);
}

MyFunction2.java

1
2
3
4
5
6
7
package com.laisc;

@FunctionalInterface
public interface MyFunction2 {
int doSomething(int v);
}

运行后终端显示:

1
2
输入的是:你好
10

2.结合常见函数式接口使用

Java 提供了许多内置的函数式接口,如:

接口名 参数类型 返回值类型 用途
Consumer<T> T void 消费一个值
Supplier<T> T 提供一个值
Function<T,R> T R 将T转换成R
Predicate<T> T boolean 判断条件是否成立

修改之前的代码:
Main.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package com.laisc;

import java.util.function.Consumer;
import java.util.function.Predicate;

public class Main {
public static void main(String[] args) {

MyFunction f = s -> System.out.println("输入的是:" + s);
f.doSomething("你好");

MyFunction2 f2 = v1 -> v1+1;
System.out.println(f2.doSomething(9));


// Consumer 示例
Consumer<String> c = s -> System.out.println("Hello " + s);
c.accept("世界"); // 输出:Hello 世界

// Predicate 示例
Predicate<String> p = s -> s.length() > 3;
System.out.println(p.test("abc")); // 输出:false
}
}

运行后终端显示:

1
2
3
4
输入的是:你好
10
Hello 世界
false