Java新特性-Lambda表达式入门
来源:互联网 发布:阿里云 域名解析设置 编辑:程序博客网 时间:2024/05/19 13:55
假设我们现在来写一个依据不同属性来筛选苹果的方法,代码如下:
Predicate接口代码如下:
package java8Test;/** * * @ClassName: Predicate * @Description:函数式接口:就是只定义一个抽象方法的接口 * @author cheng * @date 2017年8月17日 上午9:00:59 */@FunctionalInterfacepublic interface Predicate<T> { boolean test(T t);}
筛选方法:
/** * * @Title: filterApples * @Description: 筛选方法 * @param inventory * @param p * @return */ public static List<Apple> filterApples(List<Apple> inventory, Predicate<Apple> p) { List<Apple> result = new ArrayList<Apple>(); for (Apple apple : inventory) { if (p.test(apple)) {//调用接口中的方法 result.add(apple); } } return result; }
第一种方式:实现接口
实现Predicate接口,代码如下:
package java8Test;/** * * @ClassName: AppleColorPredicate * @Description:筛选苹果颜色 * @author cheng * @date 2017年8月17日 下午5:20:17 */public class AppleColorPredicate implements Predicate<Apple> { /** * 筛选颜色 */ @Override public boolean test(Apple apple) { return "green".equals(apple.getColor()); }}
调用filterApples方法,代码如下:
filterApples(inventory, new AppleColorPredicate());
不足之处:随着筛选条件的增加,实现接口的类越来越多
第二种方式:匿名内部类
直接使用匿名内部类,代码如下:
filterApples(inventory, new Predicate<Apple>() { /** * 重写test方法 */ @Override public boolean test(Apple apple) { return "green".equals(apple.getColor()); }});
不足之处:模板化代码太多,核心代码就一句:“green”.equals(apple.getColor());
第三种方式:Lambda表达式
使用Lambda表达式,代码如下:
filterApples(inventory, (Apple apple) -> "green".equals(apple.getColor()));
分析:
上面代码中的filterApples方法,其中有一个为Predicate接口类型的参数,传入这个接口的引用,实质上是为了调用Predicate接口里的方法,现在由于Predicate接口中只有一个方法,即test方法.所以传入这个接口的引用参数实质上是为了调用Predicate接口中的test方法.这里使用的Lambda表达式,其实就是重写filterApples接口中的test方法.使用Lambda表达式直接实现了代码的传递,从而达到了行为参数化的目的
阅读全文
0 0
- Java新特性-Lambda表达式入门
- JAVA 新特性:lambda表达式
- Java新特性 lambda表达式
- Java 8 新特性之 Lambda 表达式
- Java 8新特性:lambda表达式
- Java 8 新特性 Lambda表达式
- Java 8 新特性:Lambda 表达式
- Java JDK1.8新特性Lambda 表达式
- Java 8 新特性之 Lambda表达式
- W3Cschool Java 8新特性----> Lambda 表达式
- Java 8新特性:lambda表达式
- Java新特性之二Lambda表达式
- 【传智播客郑州校区分享】Java 8新特性之Lambda表达式入门
- JDK1.8新特性(二)Lambda表达式入门
- java8新特性Lambda表达式
- java8新特性--lambda表达式
- Java8新特性 - lambda表达式
- java8新特性-lambda表达式
- 线程常见面试题
- Java自动生成H5游戏资源版文件的版本号
- MFC--WideCharToMultiByte和MultiByteToWideChar函数的用法
- Convert BST to Greater Tree问题及解法
- 算法分析(algs4)
- Java新特性-Lambda表达式入门
- 浅谈jsp、freemarker、velocity区别
- matlab的datenum函数使用方法
- AngularsJS自定义指令
- Spring-data-jpa详解,全方位介绍。
- js对象长度与js数组长度
- 阿里巴巴Java开发手册-命名规约
- a:link,a:visited,a:hover,a:active 分别是什么意思?
- XSS插入绕过一些方式总结