Android 中 Lambda 使用
原创
©著作权归作者所有:来自51CTO博客作者qq5d510d208e604的原创作品,请联系作者获取转载授权,否则将追究法律责任
文章目录
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
代码中 Alt+Enter -> Replace with lambda
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表达式入门