学习目标
- Lambda表达式
- 函数式思想
- 函数式接口
- Lambda表达式的使用前提
- Lambda表达式的操作案例
- Stream流
- Stream流的优势
- Stream流-获取功能
- Stream流-中间功能
- Stream流-终结功能
多线程入门
形参:若有参数用逗号隔开
- ->:固定写法,代表指向性动作
- 代码块:具体要做的事,即以前我们写的方法体内容(函数式接口抽象方法的重写 )
1.1 Lambda表达式的优势 ?
- 简洁。
- 非常容易并行计算。
2.2 Lambda表达式使用前提 ?
Lambda表达式使用前提:只能操作函数式接口2.2 Lambda表达式和匿名内部类的区别 ?
|
| Lambda表达式 | 匿名内部类 | | —- | —- | —- | | 类型 | 函数式接口 | 接口、抽象类和具体类 | | 限制 | 接口仅有一个抽象方法需重写 | 接口有一个或多个抽象方法需重写 | | 原理 | 编译之后,没有一个单独的.class字节码文件。对应的字节码会在运行的时候动态生成 | 编译之后,产生一个单独的.class字节码文件 |
2. Stream流
2.1 Stream流存在的优势 , 什么时候使用Stream流 ?
- 优势:
- 增强集合操作;
- 充分利用Lambda;
- 执行效率的提高 - 透明(支持多线程集合操作)。
- 使用场景:当需要对单列集合、双列集合、数组中的数据进行过滤、截取、去重、排序等操作时,可以通过Stream流快速实现。
- 操作:
- 获取Stream流:创建一条流水线,并把数据放到流水线上准备进行操作
终结操作:一个Stream流只能有一个终结方法;②是流水线上的最后一个操作。
void forEach(Consumer action):对此流的每个元素执行操作
Consumer接口中的方法 void accept(T t):对给定的参数执行此操作
long count():返回此流中的元素数
中间操作:①流水线上的操作;②一次操作完毕之后,还可以继续进行其他操作。
Stream
filter(Predicate predicate):用于对流中的数据进行过滤 Predicate接口中的方法 : boolean test(T t):对给定的参数进行判断,返回一个布尔值
Stream
limit(long maxSize):截取指定参数个数的数据 - Stream
skip(long n):跳过指定参数个数的数据 - static
Stream concat(Stream a, Stream b):合并a和b两个流为一个流 - Stream
distinct():去除流中重复的元素。依赖(hashCode和equals方法) - Stream
sorted () : 将流中元素按照自然排序的规则排序 - Stream
sorted (Comparator<? super T> comparator) : 将流中元素按照自定义比较器规则排序 2.2 Stream流的获取方法?
- 单列集合:可以使用Collection接口中的默认方法stream()生成流(default Stream
stream()); - 双列集合:间接的生成流,可以先通过keySet或者entrySet获取一个Set集合,再获取Stream流;
- 数组:Arrays中的静态方法stream 生成流;
- 多个数据:Steam类中的静态方法(public static Stream
of(T … t);)。 2.3 Stream流中常用API有哪些 ?
| 方法名称 | 方法作用 | 方法种类 | 是否支持链式调用 | | —- | —- | —- | —- | | count | 统计个数 | 终结方法 | 否 | | forEach | 逐一处理 | 终结方法 | 否 | | filter | 过滤 | 函数拼接 | 是 | | limit | 取用前几个 | 函数拼接 | 是 | | skip | 跳过前几个 | 函数拼接 | 是 | | map | 映射 | 函数拼接 | 是 | | concat | 组合 | 函数拼接 | 是 |
3. 多线程实现的方式
3.1 多线程实现方式区别 ?
| 实现方式 | 优点 | 缺点 |
|---|---|---|
| 继承Thread类 | 代码实现方式比较简单,可以直接使用Thread类中功能 | 扩展性较差,只能继承Thread类,任务执行完毕没有返回值结果,有异常只能捕获 |
| 实现Runnable接口 | 代码实现方式比较简单,扩展性较强因为还可以继承其他的类 | 不能直接使用Thread类中的功能,任务执行完毕没有返回值结果,有异常只能捕获 |
| 实现Callable接口 | 展性较强因为还可以继承其他的类,任务执行完毕会有一个返回值结果,如任务中出现 | 实现太过复杂,不能直按使用Thread类中的功能 |
- 当日问题小结
4.1 当日遇到的问题
4.2 出现问题原因
4.3 解决问题方案
