Java 8 之 行为参数化

能上代码绝不不逼逼

行为参数化

1、编写能够应对需求变化的代码不容易
假设现在有一个Apple类 里面有color weight 两个属性
我们需要从一个List中把颜色为红色的苹果拿出来 放到另一个List中去
那么我们的第一种解决方案口可能是这样的

Java 8 之 行为参数化

如果现在需求变了 用户想筛选黄颜色的苹果呢?
简单的解决办法就是我们把代码复制一份 改变red为yellow即可

那么如果用户想根据自己的输入筛选呢?
我们可能这样解决
Java 8 之 行为参数化
现在如果用户想筛选红色的并且重量大于xxx的 我们怎么办呢?
你可能在上一个方法中除了color再新增一个weight进行判断
然而这绝不是一个好办法

那么Java 8是怎么解决的呢?

让我们直接看最终解决方案
Java 8 之 行为参数化

如果我们需要根据苹果的属性来自定义排序呢 这里可以用到方法引用
Java 8 之 行为参数化

现在苹果按照重量升序排列了 那如果想降序呢 我们不需重新定义
这样处理即可 接口的reversed可以使给定的比较器逆序
Java 8 之 行为参数化

如果我们想要筛选出来即是红色重量又大于100克的苹果呢
Java 8 之 行为参数化

下章和大家分享Java 8 中的流
1、什么是流
2、流的特性
3、外部迭代与内部迭代
4、流的操作(中间操作和终端操作)