JAVA 8 In Action 读书笔记 (一) : Lambda
来源:互联网 发布:地方门户源码论坛 编辑:程序博客网 时间:2024/06/05 17:19
首先定义一个测试对象
//POJO, Person对象public class Person { private String name; private int weight; public Person(String name, int weight) { super(); this.name = name; this.weight = weight; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getWeight() { return weight; } public void setWeight(int weight) { this.weight = weight; } @Override public String toString() { // TODO Auto-generated method stub return name+" : "+ weight +" KG "; }}
定义接口,用来服务lambda
public interface CustomPredicate<T> { //所有只有一个方法(不包括default方法)的接口都可以用做lambda表达式 boolean test(T t); // JAVA8中的方法可以包含实现,方便类库的API升级。 // 此方法只是展示default方法的作用,并无使用 default void println(String log) { System.out.println(log); }}
具体的测试类
public class Demo { public static void main(String[] args) { List<Person> source= Arrays.asList(new Person("Li Lei", 90),new Person("Han Meimei", 60),new Person("Xiao wang", 82),new Person("Xiao zhang", 50)); //找到体重大于80KG的人 //采用匿名类方式 List<Person> target1= customFilter(source, new CustomPredicate<Person>() { @Override public boolean test(Person t) { if(t.getWeight()>80) { return true; } return false; } }); //采用Lambda表达式 List<Person> target2= customFilter(source, (person)->person.getWeight()>80 ); //采用stream和Lambda List<Person> target3=source.stream().filter((person)->person.getWeight()>80).collect(Collectors.toList()); System.out.println("匿名类结果 : "+Arrays.toString(target1.toArray())); System.out.println("自定义接口的Lambda 结果 : "+Arrays.toString(target2.toArray())); System.out.println("Stream版本的Lambda 结果 : "+Arrays.toString(target2.toArray())); } static List<Person> customFilter(List<Person> source, CustomPredicate<Person> p){ List<Person> target= new ArrayList<>(); for(Person person: source) { if(p.test(person)) { target.add(person); } } return target; }}
运行结果:
匿名类结果 : [Li Lei : 90 KG , Xiao wang : 82 KG ]
自定义接口的Lambda 结果 : [Li Lei : 90 KG , Xiao wang : 82 KG ]
Stream版本的Lambda 结果 : [Li Lei : 90 KG , Xiao wang : 82 KG ]
Github源码
Eclipse工程源码
阅读全文
0 0
- JAVA 8 In Action 读书笔记 (一) : Lambda
- JAVA 8 In Action 读书笔记 (三) : Collect In Stream
- Hibernate In Action 读书笔记(一)
- JAVA 8 In Action 读书笔记 (二) : Stream
- JAVA 8 In Action 读书笔记 (四) : LocalDateTime , Instant
- JAVA 8 In Action 读书笔记 (五) : MultiThreads
- JSF in Action读书笔记一
- 《NHibernate in Action》读书笔记【一】
- Spring in Action读书笔记 (一)
- 《netty in action》读书笔记一
- Java 8 in Action (3) -- Lambda的简单使用
- lambda in java 8
- 读书笔记Java Reflection In Action 157页
- 《Thinking in Java》读书笔记(一)
- Thinking in java读书笔记-线程(一)
- 《Java in Action》-1 第3章 Lambda表达式
- Lambda Expression in Java 8
- Lambda Expressions in Java 8
- Tomcat解决中文乱码
- Linux Tomcat安装
- Tomcat 服务自动启动
- Windows访问Linux的Tomcat,显示无法连接
- Tomcat性能调优
- JAVA 8 In Action 读书笔记 (一) : Lambda
- Tomcat的web项目部署方式
- Tomcat处理一个HTTP请求的过程
- Java IO总结
- HTML——有用的实体字符集,如:¥、÷、©等符号
- Java NIO总结
- Java 集合总结
- viewpager无限轮播,画小圆点,小圆点的布局
- Java栈和局部变量操作(一)