读Java8函数式编程笔记04_类库

1. 默认方法
1.1. 接口中定义的包含方法体的方法,方法名有default关键字做前缀
1.1.1. 在任何接口中,无论函数接口还是非函数接口,都可以使用该方法
1.2. Collection接口
1.2.1. stream方法
1.3. Iterable接口
1.3.1. forEach方法
1.4. 虚方法
1.5. 类中重写的方法优先级高于接口中定义的默认方法
1.5.1. 能简化很多继承问题
1.5.2. 任何时候,一旦与类中定义的方法产生冲突,都要优先选择类中定义的方法
1.5.3. 如果类中重写的方法没有默认方法的优先级高,那么就会破坏已有的实现
1.5.4. 为了在接口上向后兼容
2. 接口的静态方法
2.1. Stream.of
2.2. Stream.range
2.3. Stream.iterate
3. 改变了人们认识类库的方式,接口中的方法也可以包含代码体
4. 函数接口的方法
4.1. 使用Predicate,调用test方法
4.2. 使用Function,调用apply方法
5. 基本类型
5.1. int
5.2. 内建在语言和运行环境中
5.3. 基本的程序构建模块
6. 装箱类型
6.1. Integer
6.2. 普通的Java类
6.3. 对基本类型的一种封装
7. 在最坏的情况下,同样大小的数组,Integer[]要比int[]多占用6倍内存
8. 装箱
8.1. 将基本类型转换为装箱类型
9. 拆箱
9.1. 将装箱类型转换为基本类型
10. Stream类特殊处理的基本类型
10.1. IntStream
10.2. DoubleStream
10.3. LongStream
10.4. summaryStatistics方法
10.4.1. min
10.4.2. max
10.4.3. average
10.4.4. sum
11. BinaryOperator
11.1. 一种特殊的BiFunction类型
11.2. 参数的类型和返回值的类型相同
12. 目标类型推导规则
12.1. 如果只有一个可能的目标类型,由相应函数接口里的参数类型推导得出
12.2. 如果有多个可能的目标类型,由最具体的类型推导得出
12.3. 如果有多个可能的目标类型且最具体的类型不明确,则需人为指定类型
13. @FunctionalInterface
13.1. 每个用作函数接口的接口都应该添加这个注释
13.2. Java中有一些接口,虽然只含一个方法,但并不是为了使用Lambda表达式来实现的
13.3. 关闭资源是更改状态的另一种形式
13.4. 该注释添加给一个枚举类型、类或另一个注释,或者接口包含不止一个抽象方法,javac就会报错
13.4.1. 重构代码时,使用它能很容易发现问题
14. 多重继承
14.1. 使用super关键字是指向父类
14.2. InterfaceName.super这样的语法指的是继承自父接口的方法
15. 三定律
15.1. 类胜于接口。如果在继承链中有方法体或抽象的方法声明,那么就可以忽略接口中定义的方法
15.1.1. 为了让代码向后兼容
15.2. 子类胜于父类。如果一个接口继承了另一个接口,且两个接口都定义了一个默认方法,那么子类中定义的方法胜出
15.3. 如果上面两条规则不适用,子类要么需要实现该方法,要么将该方法声明为抽象方法
16. 接口和抽象类的区别
16.1. 接口允许多重继承,却没有成员变量
16.2. 抽象类可以继承成员变量,却不能多重继承
17. Optional
17.1. 在一个值可能为空的建模情况下,使用Optional对象能替代使用null值
17.2. 为核心类库新设计的一个数据类型,用来替换null值
17.2.1. 使用null代表值不存在的最大问题在于NullPointerException
17.3. Optional对象鼓励程序员适时检查变量是否为空,以避免代码缺陷
17.4. 它将一个类的API中可能为空的值文档化,这比阅读实现代码要简单很多
17.5. 方法
17.5.1. get
17.5.2. orElse
17.5.2.1. 当Optional对象为空时,该方法提供了一个备选值
17.5.3. orElseGet
17.5.3.1. 接受一个Supplier对象,只有在Optional对象真正为空时才会调用
17.5.4. empty
17.5.5. ofNullable
17.5.5.1. 将一个空值转换成Optional对象
17.5.6. isPresent
17.5.6.1. 一个Optional对象里是否有值
读Java8函数式编程笔记04_类库的更多相关文章
- Java8 函数式编程详解
Java8 函数式编程详解 Author:Dorae Date:2017年11月1日23:03:26 转载请注明出处 说起Java8,可能很多人都已经知道其最大的改进,就是引入了Lambda表达式与S ...
- Java8函数式编程探秘
引子 将行为作为数据传递 怎样在一行代码里同时计算一个列表的和.最大值.最小值.平均值.元素个数.奇偶分组.指数.排序呢? 答案是思维反转!将行为作为数据传递. 文艺青年的代码如下所示: public ...
- [2017.02.23] Java8 函数式编程
以前学过Haskell,前几天又复习了其中的部分内容. 函数式编程与命令式编程有着不一样的地方,函数式编程中函数是第一等公民,通过使用少量的几个数据结构如list.map.set,以及在这些数据结构上 ...
- 关于Java8函数式编程你需要了解的几点
函数式编程与面向对象的设计方法在思路和手段上都各有千秋,在这里,我将简要介绍一下函数式编程与面向对象相比的一些特点和差异. 函数作为一等公民 在理解函数作为一等公民这句话时,让我们先来看一下一种非常常 ...
- Java8函数式编程的宏观总结
1.java8优势通过将行为进行抽象,java8提供了批量处理数据的并行类库,使得代码可以在多核CPU上高效运行. 2.函数式编程的核心使用不可变值和函数,函数对一个值进行处理,映射成另一个值. 3. ...
- 重识Java8函数式编程
前言 最近真的是太忙忙忙忙忙了,很久没有更新文章了.最近工作中看到了几段关于函数式编程的代码,但是有点费解,于是就准备总结一下函数式编程.很多东西很简单,但是如果不总结,可能会被它的各种变体所困扰.接 ...
- [一] java8 函数式编程入门 什么是函数式编程 函数接口概念 流和收集器基本概念
本文是针对于java8引入函数式编程概念以及stream流相关的一些简单介绍 什么是函数式编程? java程序员第一反应可能会理解成类的成员方法一类的东西 此处并不是这个含义,更接近是数学上的 ...
- java8函数式编程(转载)
1. 概述 1.1 函数式编程简介 我们最常用的面向对象编程(Java)属于命令式编程(Imperative Programming)这种编程范式.常见的编程范式还有逻辑式编程(Logic Progr ...
- 漫漫人生路,学点Jakarta基础-Java8函数式编程
接口默认方法 Java8版本以后新增了接口的默认方法,不仅仅只能包含抽象方法,接口也可以包含若干个实例方法.在接口内定义实例方法(但是注意需要使用default关键字) 在此定义的方法并非抽象方法,而 ...
- java8函数式编程实例
什么是函数式编程 函数式编程是java8的一大特色,也就是将函数作为一个参数传递给指定方法.别人传的要么是基本数据类型,要么就是地址引用 ,我们要穿一个“动作”. Stream 说到函数式编程,就不得 ...
随机推荐
- 一键部署haproxy脚本
HAPROXY_VERSION=2.6.6 HAPROXY_FILE=haproxy-${HAPROXY_VERSION}.tar.gz #HAPROXY_FILE=haproxy-2.2.12.ta ...
- Android开发 对接微信分享SDK总结
原文:Android开发 对接微信分享SDK总结 - Stars-One的杂货小窝 公司项目需要对接微信分享,本来之前准备对接友盟分享的,但友盟的分享实际参数太多,而我又只需要对接一个微信分享,于是便 ...
- 嵌入式-C语言基础:联合体和共用体的概念
有时候同一块内存空间存放类型不同,不同类型的变量共享一块空间. 结构体和共用体的区别: (1)结构体元素有各自单独空间,共用体元素共享空间,空间大小由最大类型确定. (2)结构体元素互不影响共用体赋值 ...
- Go语言核心36讲05
你已经使用过Go语言编写了小命令(或者说微型程序)吗? 当你在编写"Hello, world"的时候,一个源码文件就足够了,虽然这种小玩意儿没什么用,最多能给你一点点莫名的成就感. ...
- python(牛客)试题解析1 - 简单
导航: 一.NC103 反转字符串 二.NC141 判断是否为回文字符串 三.NC151 最大公约数 四.NC65 斐波那契数列 五.字符按排序后查看第k个最小的字母 六.数组内取出下标相同的元素求和 ...
- i春秋Backdoor
点开是道没有任何窗口的题,右键查看源码也没上面东西,抓包试试,也没找到什么提示性的信息,根据提示去看看敏感文件泄露是什么吧 这里找到了篇敏感文件泄露的介绍及利用方法:https://www.cnblo ...
- 9 STL-queue
重新系统学习c++语言,并将学习过程中的知识在这里抄录.总结.沉淀.同时希望对刷到的朋友有所帮助,一起加油哦! 生命就像一朵花,要拼尽全力绽放!死磕自个儿,身心愉悦! 写在前面,本篇章主要介绍S ...
- 乐维监控与Zabbix对比分析(一)——架构、性能
近年来,Zabbix凭借其近乎无所不能的监控及优越的性能一路高歌猛进,在开源监控领域独占鳌头:而作为后起的新锐监控平台--乐维监控,则不断吸收Zabbix,Prometheus等优秀开源平台的优点,兼 ...
- JavaEE Day12 Xml
今日内容Xml 1.概念 2.语法结构 3.解析xml 一.XML概述 1.概念 Markup Language Extensible Markup Language--可扩展标记语言 标记语言:标签 ...
- 【知识体系】Kafka文档汇总、组成及架构,配置,常见名词解释,命令行及api操作,官方文档内容,各部分深入,zookeeper和security,监控和运维
〇.相关资料 1.快速搭建文档: 2.详细讲义 3.在线官方文档:http://kafka.apache.org/documentation/ 4.Kafka知识个人总结 5.KafkaPPT汇报 链 ...