文章目录

Lambda表达式的基本语法

(parameters) -> expression

(parameters) ->{ statements; }

下面是Java lambda表达式的简单例子:


// 1. 不需要参数,返回值为 5
() -> 5

// 2. 接收一个参数(数字类型),返回其2倍的值
x -> 2 * x

// 3. 接受2个参数(数字),并返回他们的差值
(x, y) -> x – y

// 4. 接收2个int型整数,返回他们的和
(int x, int y) -> x + y

// 5. 接受一个 string 对象,并在控制台打印,不返回任何值(看起来像是返回void)
(String s) -> System.out.print(s)

Android中使用Lambda表达式

File -> Project Structure
Android 中 Lambda 使用_匿名内部类
代码中 Alt+Enter -> Replace with lambda
Android 中 Lambda 使用_Lambda_02

list循环使用lambda

    String[] atp = {"Rafael Nadal", "Novak Djokovic",
"Stanislas Wawrinka",
"David Ferrer","Roger Federer",
"Andy Murray","Tomas Berdych",
"Juan Martin Del Potro"};

List<String> players = Arrays.asList(atp);

// 以前的循环方式
for (String player : players) { System.out.println(player + "; "); }
//使用lambda表达式
players.forEach((player) -> System.out.println(player + ";"));
//java8中使用双冒号操作符
players.forEach(System.out::println);

匿名类使用lambda表达式

一个 Button 绑定一个点击事件

// 使用匿名内部类
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("TAG","clicked");
}
});
// 使用 lambda 表达式
btn.setOnClickListener(v -> Log.d("TAG","clicked"));

// 如果要执行多行代码用大括号
btn.setOnClickListener(v -> {
Log.d("TAG","clicked");
Log.d("TAG","clicked2");
});

Runnable接口实现Lambda


// 1.1使用匿名内部类
new Thread(new Runnable() {
@Override
public void run() {
Log.d("TAG","Runnable");
}
}).start();

// 1.2使用 lambda expression
new Thread(() -> Log.d("TAG","Runnable")).start();


// 2.1使用匿名内部类
Runnable r1 = new Runnable() {
@Override
public void run() {
Log.d("TAG","r1");
}
};

// 2.2使用 lambda expression
Runnable r2 = () -> Log.d("TAG","r2");

// 直接调用 run 方法(没开新线程)
r1.run();
r2.run();

使用Lambdas排序集合

想全局搜索修改可以查找

new TextView.
new View.
new On
new Runnable

Java Lambda表达式入门