关于java中Lambda表达式的使用(粗解)
来源:互联网 发布:淘宝3c数码类目包括 编辑:程序博客网 时间:2024/06/06 01:45
Lambda表达式的使用可以很大程度上减少代码的数量,但是阅读起来并不是怎么方便,如果是长期查看lambda代码可能还好一点!!!使用lambda表达式减少的代码主要是简化匿名内部类使用的代码的数量,Lambda表达式的书写方式:
(参数) -> 表达式
(参数) -> 语句
(参数) -> { 语句 }
结合上面的书写模式下面来看几个例子:
正常的java表达式:
new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub System.out.print("Hello Lambda!!\n"); } }).start();
Lambda表达式:
new Thread(()->System.out.print("Hello Lambda!!\n")).start();
正常的java表达式:
filter(languages,new Predicate<String>() { @Override public boolean test(String t) { return true; } }); private static void filter(List<String> names, Predicate<String> condition) { for(String name: names) { if(condition.test(name)) { System.out.println(name + " "); } } }
Lambda表达式:
filter(languages, (str)->true); private static void filter(List<String> names, Predicate<String> condition) { for(String name: names) { if(condition.test(name)) { System.out.println(name + " "); } } }
正常的java表达式:
List<Integer> costBeforeTax = Arrays.asList(100, 200, 300, 400, 500,600); Stream<Double> s = costBeforeTax.stream().map(new Function<Integer, Double>() { @Override public Double apply(Integer t) { return t*1.12; } }); Optional<Double> o = s.reduce(new BinaryOperator<Double>() { @Override public Double apply(Double arg0, Double arg1) { // TODO Auto-generated method stub System.out.println(arg0+" + "+arg1); return arg0+arg1; } }); System.out.println("2222222222 Total : " + o.get());
Lambda表达式:
double d = costBeforeTax.stream().map((cc)->cc*1.12).reduce((x,y)->x+y).get(); System.out.println("1111111111 Total : " + d);
通过对比可以很明显看到,使用lambda表达式可以写出更加简短的代码,但是不是很适合阅读,特别是对于一些不熟悉的方法,比如reduce,如果没有接触到这个方法,仅仅只看这个Lambda表达式根本看不出什么,而且也看不出reduce方法的输入参数类型和返回结果类型!!
个人觉得,在使用任何一种语言或者新的方式编程都是一个熟能生巧的过程,对于Lambda表达式而言,只要你勤加练习,估计你以后在使用到匿名内部类的时候就会自然而然的使用Lambda表达来装逼编写代码了!!
在使用Lambda时,你可能需要对一些接口的回调特别熟悉,不然都不清楚参数的意义,还写个毛线呀,个人觉得你不会Lambda表达式也没有什么关系(难道使用Lambda表达式还可以优化程序执行速度吗?没听有人这么说呀,所以这玩意对我而言纯属装逼用的)!!
关于Lambda表达式就说这么到,有兴趣的朋友可以以关注我,遇到问题大家一起讨论一下!!
阅读全文
0 0
- 关于java中Lambda表达式的使用(粗解)
- Java中Lambda表达式的使用
- Java中Lambda表达式的使用
- Java中Lambda表达式的使用
- Java中Lambda表达式的使用
- Java中Lambda表达式的使用
- Java中Lambda表达式的使用
- 关于 python 中使用 lambda 表达式的问题
- 在Android中使用Java 8的lambda表达式
- 在Java中使用Lambda表达式的技巧
- 关于boost中lambda表达式的学习
- JAVA 中Lambda表达式
- java8中Lambda表达式的使用
- python中lambda表达式的使用
- C++中lambda表达式的使用
- JDK8中Lambda表达式的使用
- java中Lambda表达式的用法
- Java中Lambda表达式的学习
- ofo 共享单车链接
- iOS9 Universal Links (通用链接)
- svm
- [Unity&C#&继承]如何新增新的对象在已经继承的子类中
- quilt的常用使用命令解释
- 关于java中Lambda表达式的使用(粗解)
- CSS 在线编辑器
- H5 21
- JavaScript 闭包
- bzoj2152 聪聪可可
- oracle 表数据 导入导出.DMP文件 及 常见问题
- 砝码称重问题
- h5 23
- 11-散列4 Hashing