Java 中的箭头运算符
Java 中的箭头运算符用于形成 lambda 表达式。它将参数与表达式主体分开。
(parameter) -> {statement;};
Lambda 表达式可以用来代替 Java 中的匿名类,使代码更加简洁和可读。对比如下:
Runnable r = new Runnable() {
@Override
public void run() {
System.out.print("Run method");
}
};
Runnable r = () -> System.out.print("Run method");
由于 Runnable 是单方法接口,因此很容易使用 lambda 表达式进行覆写。
箭头运算符在流 API 中的应用
在 .filter() 和 .forEach() 中使用 lambda 表达式来简化代码。
import java.util.ArrayList;
import java.util.stream.Stream;
class Student{
int id;
String name;
int score;
public Student(int id, String name, int score) {
this.id = id;
this.name = name;
this.score = score;
}
}
public class test{
public static void main(String[] args) {
ArrayList<Student> list = new ArrayList<>();
list.add(new Student(1, "yzc", 93));
list.add(new Student(2, "lxy", 94));
list.add(new Student(3, "sbw", 59));
list.add(new Student(4, "hqm", 86));
Stream<Student> filtered_data = list.stream().filter(s -> s.score > 60);
filtered_data.forEach(
stu -> System.out.println(stu.name + ": " + stu.score)
);
}
}
在线程中使用箭头运算符
public class test{
static int i = 0;
public static void main(String[] args) {
Runnable r = () -> {
System.out.println("hello world");
System.out.println("i: " + (++i));
};
Thread t1 = new Thread(r);
Thread t2 = new Thread(r);
t1.start();
t2.start();
}
}
|