学习b站up主三更草堂的笔记
1.lambda
参考连接:一文搞懂Java8 Lambda表达式(附视频教程)
常常介绍的就是创建线程了
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("hhh");
}
}).start();
new Thread(()-> System.out.println("hh")).start();
还有平时最常用的遍历list
ArrayList<String> stringArrayList = new ArrayList<>();
stringArrayList.add("a");
stringArrayList.add("b");
stringArrayList.add("c");
stringArrayList.forEach(s -> {
System.out.println(s = s + "hhhh");
});
stringArrayList.forEach(System.out::println);
进阶小技巧:匿名内部类进一步探索
将参数定义为函数式接口(只有一个抽象实现方法)的话,调用方法时使用lambda使用匿名内部类传入参数,方便灵活使用
还有就是在mybatsiplus中经常用到了。
2.stream
参考连接:不会Lambda表达式、函数式编程?你确定能看懂公司代码?
1创建流
2中间操作
filter(根据条件过滤)
map(转换和计算)
distinct(去重)
sorted(排序,要求元素无重复)
limit(获取前n个)
skip(跳过前n个)
skip(跳过前n个)
flatMap(将流的元素再转换为流)
终结操作
foreach(遍历)
count(求数量)
max&min(最值)返回optional类型
collect(收集流里面的元素
find&match(查找与匹配)
reduce(按照指定计算方式返回一个结果)
Optional(避免空指针异常)
创建对象
安全的消费与获取值
过滤(同stream,但是返回的是optional对象)
数据转换(同stream,但是返回的是optional对象)
函数式接口
接口中只含有一个抽象方法的接口,接口里也可以有非抽象方法。