今日学习目标
| 面向对象思想 | 强调的是用对象去完成某些功能 |
|---|---|
| 函数式编程思想 | 强调的是结果 , 而不是怎么去做 |
1.2 函数式接口
- 只有一个抽象方法需要重写的接口
- 允许有其他非抽象方法
为了标识接口是一个函数式接口,可以在接口上面加个注解:@FunctionalInterface
1.3 Lambda表达式的使用
必须存在一个函数式接口:有且只有一个抽象方法
格式: ()->{}
获取功能
- 创建一条流水线,并把数据放到流水线上准备进行操作
- 中间方法
- 流水线上的操作
- 一次操作之后可以连接其他操作
- 终结方法
- Stream
filter(Predicate predicate):用于对流中的数据进行过滤
Predicate接口中的方法 : boolean test(T t):对给定的参数进行判断,返回一个布尔值
2. Streamlimit(long maxSize):截取指定参数个数的数据
3 Streamskip(long n):跳过指定参数个数的数据
4 staticStream concat(Stream a, Stream b):合并a和b两个流为一个流
5 Streamdistinct():去除流中重复的元素。依赖(hashCode和equals方法)
6 Streamsorted () : 将流中元素按照自然排序的规则排序
7 Streamsorted (Comparator<? super T> comparator) : 将流中元素按照自定义比较器规则排序
8Stream map(Function<? super T,? extends R> mapper) : 将流中的元素类型进行转换 第三类 : 终结方法
1 void forEach(Consumer action):对此流的每个元素执行操作Consumer接口中的方法 void accept(T t):对给定的参数执行此操作
2 long count():返回此流中的元素数2.2 Stream流中的收集方法
- 单列集合
- 可以使用Collection接口中的默认方法stream()生成流
- default Stream
stream()
- 双列集合
- 双列集合不能直接获取 , 需要间接的生成流
- 可以先通过keySet或者entrySet获取一个Set集合,再获取Stream流
- 数组
- Arrays中的静态方法stream生成流
把同一种数据类型多个数据放到stream
public static
Collector toList():把元素收集到List集合中
public staticCollector toSet():把元素收集到Set集合中 3 Optional类
3.1Optional类的概念和作用
Optional类是一个可以为null的容器对象.如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象。
优势 : Optional 类的引入很好的解决空指针异常 , 同样Optional类可以对空值判断形成一种规范
3.2Optional类的常用方法
public static
Optional of(T value) - 通过非null值构建一个Optional容器,注意value不能不为null否则抛出异常
- public static
Optional ofNullable(T value) - 通过指定值构建一个Optional容器官如果值为null则返回Optional.empty
- public T orElse(T other)
- 返回值如果存在,否则返回other
- public boolean isPresent()
- 如果对象为null返回的是false,如果对象不为null返回的是true
public T get()
并发与并行
- 并行:在同一时刻,有多个任务在多个CPU上同时执行。
- 并发:在同一时刻,有多个任务在单个CPU上交替执行。
进程与线程
基本步骤:
构造方法
- public Thread(Runnable target)
- public Thread(Runnalbe target , String name)
实现步骤
String getName():返回此线程的名称
- Thread类中设置线程的名字
- void setName(String name):将此线程的名称更改为等于参数 name
- 通过构造方法也可以设置线程名称
- public static Thread currentThread():返回对当前正在执行的线程对象的引用
- public static void sleep(long time):让线程休眠指定的时间,单位为毫秒 | 实现方式 | 优点 | 缺点 | | —- | —- | —- | | 继承Thread类 | 代码实现方式比较简单,可以直接使用Thread类中功能 | 扩展性较差,只能继承Thread类,任务执行完毕没有返回值结果,有异常只能捕获 | | 实现Runnable接口 (常用) | 代码实现方式比较简单,扩展性较强因为还可以继承其他的类 | 不能直接使用Thread类中的功能,任务执行完毕没有返回值结果,有异常只能捕获 | | 实现Callable接口 | 展性较强因为还可以继承其他的类,任务执行完毕会有一个返回值结果,如任务中出现 | 实现太过复杂,不能直按使用Thread类中的功能 |
