JDK8 Lambdas (一)
2016-08-31 19:23
337 查看
摘要: 一个Java8最重要的特征是引入Lambda表达式。它使你的代码简洁。一段时间以来,Java已经被批评为冗长和缺乏功能的编程语言。函数式编程变得更加流行,Java是被迫接受的函数式编程风格,否则Java将变得无关紧要。
详细的请查看Lambda
小栗子认识一下Lambda 函数编程:
##lambdas的使用
###1. 匿名函数 VS lambdas
执行结果:
###2. 集合排序 vs lambdas
执行结果:
上述两个例子看到不仅仅是一个代码量的差距,lambdas写得还是很优美的。
下一篇将介绍:Predicate、Consumer、Function、Supplier
详细的请查看Lambda
小栗子认识一下Lambda 函数编程:
public class LambdasTest { public static void main(String[] args) { List<String> names = Arrays.asList("palmg", "kai", "shui"); //按照字符的长度排序 Collections.sort(names, (first, second) -> first.length() - second.length()); //打印每个字符 names.forEach(System.out::println); } }
##lambdas的使用
###1. 匿名函数 VS lambdas
public class LambdasTest01 { interface Message { void send(Runnable runnable); } static class PhoneMessage implements Message { private AtomicInteger num = new AtomicInteger(0); @Override public void send(Runnable runnable) { runnable.run(); System.out.println("--------------我是分界线" + (num.getAndIncrement()) + "-----------------"); } } public static void main(String[] args) { PhoneMessage phoneMessage = new PhoneMessage(); //1. jdk 8 之前我们需要实现一个匿名函数 phoneMessage.send(new Runnable() { @Override public void run() { System.out.println("匿名函数写法"); } }); //2. jkd8之后,我们可以这样 phoneMessage.send(() -> System.out.println("lambdas表达方式")); } }
执行结果:
匿名函数写法 --------------我是分界线0----------------- lambdas表达方式 --------------我是分界线1-----------------
###2. 集合排序 vs lambdas
/** * Lambdas Comparator * Created by Kaishui on 2016/8/30. */ public class LambdasTest02 { static class NameComparator implements Comparator<String> { @Override public int compare(String first, String second) { return first.compareTo(second); } } public static void main(String[] args) { List<String> names = Arrays.asList("palmg", "kai", "shui"); System.out.println("1.方法一: jdk8之前,按照名称排序"); Collections.sort(names, new NameComparator()); for (String name : names) { //打印 System.out.println(name); } System.out.println("2.方法二: dk8之前,按照名称排序"); Collections.sort(names, new Comparator<String>() { @Override public int compare(String first, String second) { return first.compareTo(second); } }); for (String name : names) { //打印 System.out.println(name); } System.out.println("---------我只是一条分割线-------------"); System.out.println("3. jdk8 lamdas"); Collections.sort(names, (first, second) -> first.compareTo(second)); names.forEach(System.out::println); } }
执行结果:
1.方法一: jdk8之前,按照名称排序 kai palmg shui 2.方法二: dk8之前,按照名称排序 kai palmg shui ---------我只是一条分割线------------- 3. jdk8 lamdas kai palmg shui
上述两个例子看到不仅仅是一个代码量的差距,lambdas写得还是很优美的。
下一篇将介绍:Predicate、Consumer、Function、Supplier
相关文章推荐
- JDK8 Lambdas
- JDK8中的Lambdas特性介绍
- 深入理解Blocks,Procs和lambdas
- 【笔记】【环境搭建】测试JDK8的Lambda表达式
- JDK8 的 Lambda 表达式原理
- ruby Methods, Procs, Lambdas, and Closures
- Java Hashtable 源码(JDK8)
- Ubuntu14.04 安装JDK8
- c11特性------------------lambdas的使用
- JDK8的随笔(07)_行云流水般的Lambda表达式
- 欺骗异常 – Java 8 Lambdas
- JDK8 并发包学习 Executor/ExecutorService(一)
- Ubuntu 安装 JDK 7 / JDK8 的两种方式
- jdk8 lambda表达式语法(->) 和jdk7的比较
- Jetty9+JDK8+Spring4时遇到408问题
- Android 开发使用lambda实现< JDK8兼容
- 升级到spring4.0 注意事项 才支持jdk8
- Ubuntu 14.04 安装配置 JDK8
- JDK各个版本的新特性jdk1.5-jdk8
- JDK7中匿名内部类中使用局部变量要加final,JDK8中不需要,但jdk会默认加上final