阅读《Java 8 in Action》一书的简单整理
源码参考了 java8/Java8InAction:https://github.com/java8/Java8InAction
- FilteringApples: 传递代码的例子,展示方法引用和 Lambda
- Dish: 菜肴类,有一个静态属性的菜肴列表
- StreamBasic: 指令式和函数式分别挑选低热量食物名
- StreamOperation: 流操作(中间操作和终端操作)
- Laziness: 流操作-中间操作
- BuildingStreams: 构建流,从值序列,数组,文件来创建流。斐波拉切数列的几种生成方法
使用流
- Filtering: 筛选(谓词筛选:filter;筛选互异的元素:distinct;忽略头几个元素:limit;截短至指定长度:skip)
- Mapping: 映射
- Finding: 查找和匹配
- Reducing: 归约
- PuttingIntoPractice: 各种流操作的使用示例
- NumericStreams: 数值流(原始类型特化,数值范围)
用流收集数据
- Summarizing: 归约和汇总
- Reducing: 收集器的灵活性,以不同的方法执行相同的操作
- Grouping: 分组
- Partitioning: 分区
- GroupingTransactions: 分别使用指令式和函数式进行分组
- ToListCollector: 自定义 ToListCollector,以及进行自定义收集而不去实现 Collector
- PartitionPrimeNumbers: 将数字按质数和非质数分区;Collector 详解
- CollectorHarness: 比较收集器的性能
并行数据处理
- ParallelStreamsHarness: 测量流性能
- ParallelStreams: 并行流计算 1~n 的和,分别使用指令式,串行迭代流,并行迭代流,基本类型流,有副作用的流
- ForkJoinSumCalculator: 使用分支/合并框架执行并行求和
- WordCount: Spliterator: splitable iterator
- StrategyMain: 策略模式
- TemplateMain: 模版方法
- ObserverMain: 观察者模式
- ChainOfResponsibilityMain: 责任链模式
- FactoryMain: 工厂模式
- Debugging: 查看栈跟踪
- Peek: 使用日志调试
- Ambiguous: 默认方法解决冲突
Optional
- Car,Insurance,Person: 模型类
- OptionalMain: ptional 用法(map,flatMap,filter)
- OptionalInAction: 使用 Optional 实战示例
- ReadPositiveIntParam: 使用 Optional 示例
CompletableFuture
-
v1/Shop: 商店类第一版,没有折扣
-
v1/ShopMain: 使用异步 API 的使用示例
-
v1/BestPriceFinder: 通过不同的方案实现价格查询:顺序流,并行流,CompletableFuture
-
v1/BestPriceFinderMain: 测试每种实现方案的执行时间
-
AsyncShop: 使用工厂方法 supplyAsync 创建 CompletableFuture
-
AsyncShopClient: 演示错误处理
-
ExchangeService: 货币兑换类
-
Discount: 折扣类
-
Quote: 解析商店返回的字符串
-
Shop: 商店类,报价按照
name:price:code
的格式 -
BestPriceFinder: 添加折扣后的版本
-
BestPriceFinderMain: 测试每种实现方案的执行时间
时间和日期
- DateTimeExamples: 新的时间和日期 API 示例