学习目标

  • Lambda表达式
    • 函数式思想
    • 函数式接口
    • Lambda表达式的使用前提
    • Lambda表达式的操作案例
  • Stream流
    • Stream流的优势
    • Stream流-获取功能
    • Stream流-中间功能
    • Stream流-终结功能
  • 多线程入门
    • 多线程实现的方式
    • Thread类常用功能

1. Lambda表达式

1.1 Lambda表达式的优势 ?

  1. 简化代码

1.2 Lambda表达式使用前提 ?

  1. 接口是函数式接口

1.3 Lambda和匿名内部类区别

所需类型不同 使用限制不同
匿名内部类 可以是接口,也可以是抽象类,还可以是具体类 如果接口中多于一个抽象方法,只能使用匿名内部类,而不能使用Lambda表达式
Lambda表达式 只能是函数式接口 如果接口中有且仅有一个抽象方法需要重写,可以使用Lambda表达式,也可以使用匿名内部类

2. Stream流

2.1 Stream流存在的优势 , 什么时候使用Stream流 ?

  1. 可以将数据放到流水线上,操作处理得到想要的数据,简化代码,对集合功能的增强
    操作一个集合的对象筛选,去重,转换类型等操作
  2. Stream 就如同一个迭代器(Iterator),单向,不可往复,数据只能遍历一次,遍历过一次后即用尽了,就好比流水从面前流过,一去不复返

    2.2 Stream流中常用API有哪些 ?

    | Stream limit(long maxSize):截**指定参数个数的数据 | | —- | | Stream skip(long n):跳过指定参数个数的数据 | | static Stream concat(Stream a, Stream b):合并**a和b两个流为一个流 | | Stream map(Function<? super T,? extends R> mapper) : 将流中的元素类型进行转换 | | Stream distinct():去除流中重复的元素。依赖(hashCode和equals方法) | | Stream sorted () : 将流中元素按照自然排序的规则排序 | | Stream sorted (Comparator<? super T> comparator) : 将流中元素按照自定义比较器规则排序 |

3. 多线程实现的方式

3.1 多线程实现方式区别 ?

| 继承Thread类

| 实现Runnable接口

| 实现Callable接口

| | —- | —- | —- | | 简单,可以直接使用Thread类中功能

| 简单,不能直接使用Thread类中功能

| 复杂,不能直接使用Thread类中功能

| | 没有返回值

| 没有返回值

| 可以有任意类型返回值

| | 只能捕获

| 只能捕获

| 可以抛出,也可以捕获

| | 只能继承Thread类

| 还可以继承其他的类,拓展性强

| 还可以继承其他的类,拓展性强

|


4. 当日问题小结
4.1 当日遇到的问题

4.2 出现问题原因

4.3 解决问题方案

若有收获,就点个赞吧