1、Lamda表达式
1.1、语法
Lamda常见语法:
()-> 一句代码;
()-> {一堆代码};
(int a,String b ...)-> {一堆代码};
(a,b ...)-> {一堆代码};
a -> 一句代码;
() -> 5; // 这里的5就是方法的返回值
如上括号中有参数时,参数类型可省略。
实例:
// 实例1
new Thread(()-> System.out.println("Lamda线程").start();
// 实例2
public interface St{ public void test(int i); } // 示例接口
St st = (int i)-> System.out.println("传进来的i:"+i);
st.test(3);
1.2、使用场景
函数式接口:只有一个方法的接口
对于函数式接口,我们可以通过lamda表达式来创建该接口的对象,可以简化代码。
示例接口:
interface St{
public void testMethod();
}
// 使用匿名内部类实现接口
St st = new St() {
@Override
public void testMethod() {
System.out.println("st-匿名内部类");
}
};
st.testMethod();
// lamda简化
St st = ()->{
System.out.println("Lamda简化操作");
};
st.testMethod();
Lamda表达式可以简化Cllection和Map的遍历
//准备List
List<String> sts = new ArrayList<>();
sts.add("a");sts.add("abc");sts.add("123");
sts.forEach((s)-> System.out.println(s+":Lamda"));
//准备Map
Map<Integer,String> map = new HashMap<>();
map.put(1,"a");map.put(2,"b");
map.forEach((k,v)-> {
if(v.length()<3) System.out.println(k+":"+v+" Lamda-2");
});
1.3、双冒号::
lamda表达式还可以简写,如下
| lamda表达式 | 简写 |
|---|---|
| i -> String.valueOf(i) | String::valueOf |
| i->i.toString() | Object::toString |
| ()->x.toString() | x::toString |
| ()-> new ArrayList<>() | ArrayList::new |
“::” 的前面就是 返回数据的类型,后面是返回前执行的方法。
本文介绍了Lambda表达式的语法、使用场景和双冒号::的简写方式。Lambda表达式常用于函数式接口,简化代码,例如在创建线程、实现接口以及遍历集合和Map时。通过Lambda,可以更简洁地表达单方法接口的实现,同时双冒号::用于方法引用,进一步提升代码的可读性。
2358

被折叠的 条评论
为什么被折叠?



