闽公网安备 35020302035485号
8.如果 Lambda 表达式的主体包含一条以上语句,则表达式必须包含在花括号{}中(形成代码块)。匿名函数的返回类型与代码块的返回类型一致,若没有返回则为空
Map<String, String> map = new HashMap<>();
map.put("a", "a");
map.put("b", "b");
map.put("c", "c");
map.put("d", "d");
// 堆代码 duidaima.com
System.out.println("map普通方式遍历:");
for (String key : map.keySet()) {
System.out.println("k=" + key + ",v=" + map.get(key));
}
使用Lambda进行遍历: System.out.println("map拉姆达表达式遍历:");
map.forEach((k, v) -> {
System.out.println("k=" + k + ",v=" + v);
});
List也同理,不过List还可以通过双冒号运算符遍历: List<String> list = new ArrayList<String>();
list.add("a");
list.add("bb");
list.add("ccc");
list.add("dddd");
System.out.println("list拉姆达表达式遍历:");
list.forEach(v -> {
System.out.println(v);
});
System.out.println("list双冒号运算符遍历:");
list.forEach(System.out::println);
输出结果:k=a,v=a k=b,v=b k=c,v=c k=d,v=dmap拉姆达表达式遍历:
k=a,v=a k=b,v=b k=c,v=c k=d,v=dlist拉姆达表达式遍历:
a bb ccc ddddlist双冒号运算符遍历:
a bb ccc ddddLambda 除了在for循环遍历中使用外,它还可以代替匿名的内部类。比如下面这个例子的线程创建:
//使用普通的方式创建
Runnable r1 = new Runnable() {
@Override
public void run() {
System.out.println("普通方式创建!");
}
};
//使用拉姆达方式创建
Runnable r2 = ()-> System.out.println("拉姆达方式创建!");
注: 这个例子中使用Lambda表达式的时候,编译器会自动推断:根据线程类的构造函数签名 Runnable r { },将该 Lambda 表达式赋 Runnable 接口。