Lambda表达式是什么,有什么用?
Lambda表达式是一个匿名函数,运用Lambda表达式可以极大的提高编程效率和程序可读性。
Java 8 中的 Stream 是对集合(Collection)对象功能的增强,对集合进行各种非常便利、高效的聚合操作,或者大批量数据操作。
Stream 可以理解为高级版本的 Iterator。同时它提供串行和并行两种模式进行汇聚操作,并发模式能够充分利用多核处理器的优势,使用 fork/join 并行方式来拆分任务和加速处理过程。
了解下lamdba表达式的组成:
(str) -> System.out.println(str)
左边代表参数,右边代表主体。
(str) :代表参数,不写类型会根据上下文获取(str1),也可以自己定义参数(String str1),也可以有多个参数(String str1,String str2),也可以无参()。
-> : 理解为“转到”的意思
System.out.println(str) : 代表主体,如果是代码块加上花括号{System.out.println(str1); System.out.println(str2);}
废话少说,下面介绍下在项目中经常用到的Lamdba表达式
常用的Lamdba表达式
代替匿名内部类
//before
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("123");
}
}).start();
//after
new Thread(() -> System.out.println("456")).start();
forEach:循环List
List<String> list = Arrays.asList("2", "b", "10", "4", "6", "aa", "b", "ccdf");
//before
for (String str : list) {
System.out.println(str);
}
//after
list.forEach((str) -> System.out.println(str));
// double colon operator
list.forEach(System.out::println);
System.out.println("**********************************************");
//before
for (String str : list) {
if (str.equals("a")) {
System.out.println(str);
}
}
//after
list.forEach((str) -> {
if (str.equals("a")) {