一、生成Lambda
示例代码:
public class Demo1 { public static void main(String[] args) { new Thread(new Runnable() { @Override public void run() { System.out.println("start"); } }).start(); } }
灰色代码,表示IDEA识别到这个地方可以简化(生成Lambda表达式)
光标需要移动到Runable,IDEA提示匿名内部内可以替换成Lambda表达式,使用Alt+Enter操作
选择替换
结果
public class Demo1 { public static void main(String[] args) { new Thread(() -> System.out.println("start")).start(); } }
光标移动到->位置,使用Alt+Entert可以将Lambda替换为匿名内部类
二、Lambda调试
示例
1. importimport java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; public class Demo2 { public static void main(String[] args) { Integer[] arr={1,2,2,3,4,5,6,7,8}; List<Integer> collect = Stream.of(arr) .distinct() //去重 .filter((a) -> a > 3) // 过滤,保留大于3的 .filter((a) -> a % 2 == 0) //过滤,保留偶数 .collect(Collectors.toList()); //收集 System.out.println(collect); } }
输出结果
[4, 6, 8]
在第10行打上断点,debug运行
选择trace current stream charin(跟踪stream链)
等待IDEA计算流的过程
初始状态
去重
过滤,保留大于3的
保留偶数
收集