JDK8 Lambda表达式对代码的简化
只是举个例子:
public class LambdaDemo {
public static String findData( String name , LambdaInterface finder){
return finder.getValue( name) ;
}
}
public interface LambdaInterface {
public String getValue(String key) ;
}
public class LambdaInterfaceTest {
@Test
public void test(){
Map<String,String> map = new HashMap() ;
map.put("a", "11") ;
map.put("b", "22") ;
String name = "a" ;
System.out.println(LambdaDemo.findData(name, map::get) ) ;
}
}
LambdaDemo.findData(name, map::get)这句代码其实完整形式是:
@Test
public void test1(){
Map<String,String> map = new HashMap() ;
map.put("a", "11") ;
map.put("b", "22") ; String name = "a" ;
System.out.println(LambdaDemo.findData(name,new LambdaInterface(){ @Override
public String getValue(String key) {
return map.get(key);
} }) ) ;
}
由于 LambdaInterface 接口只有一个方法,且这个接口方法只有一个参数,且接口方法的实现只有一句代码,且这句代码只接收一个接口方法传入的参数,此时就符合Lambda表达式的精简要求了,所以
LambdaDemo.findData(name,new LambdaInterface(){
@Override
public String getValue(String key) {
return map.get(key);
}
}) ;
就可以简化成了
LambdaDemo.findData(name, map::get) 这一句了
JDK8 Lambda表达式对代码的简化的更多相关文章
- jdk8 Lambda表达式与匿名内部类比较
Labmda表达式与匿名内部类 前言 Java Labmda表达式的一个重要用法是简化某些匿名内部类(Anonymous Classes)的写法.实际上Lambda表达式并不仅仅是匿名内部类的语法糖, ...
- Lambda表达式常用代码示例
Lambda表达式常用代码示例 2017-10-24 目录 1 Lambda表达式是什么2 Lambda表达式语法3 函数式接口是什么 3.1 常用函数式接口4 Lambdas和Streams结合使 ...
- Kotlin的Lambda表达式以及它们怎样简化Android开发(KAD 07)
作者:Antonio Leiva 时间:Jan 5, 2017 原文链接:https://antonioleiva.com/lambdas-kotlin/ 由于Lambda表达式允许更简单的方式建模式 ...
- jdk8 lambda表达式总结
Java8 lambda表达式10个示例 1. 实现Runnable线程案例 使用() -> {} 替代匿名类: //Before Java 8: new Thread(new Runnab ...
- Java 8 Lambda表达式,让你的代码更简洁
Lambda表达式是Java 8一个非常重要的新特性.它像方法一样,利用很简单的语法来定义参数列表和方法体.目前Lambda表达式已经成为高级编程语言的标配,像Python,Swift等都已经支持La ...
- 每日代码 - 6/26 lambda表达式
public class CartViewRender { public static CartView renderMyCartView(Cart cart){ ErrorCodeEnum erro ...
- Lambda表达式和匿名内部类(I)
本文git地址 前言 Java Labmda表达式的一个重要用法是简化某些匿名内部类(Anonymous Classes)的写法.实际上Lambda表达式并不仅仅是匿名内部类的语法糖,JVM内部是通过 ...
- 十分钟学会Java8的lambda表达式和Stream API
01:前言一直在用JDK8 ,却从未用过Stream,为了对数组或集合进行一些排序.过滤或数据处理,只会写for循环或者foreach,这就是我曾经的一个写照. 刚开始写写是打基础,但写的多了,各种乏 ...
- Java8的lambda表达式和Stream API
一直在用JDK8 ,却从未用过Stream,为了对数组或集合进行一些排序.过滤或数据处理,只会写for循环或者foreach,这就是我曾经的一个写照. 刚开始写写是打基础,但写的多了,各种乏味,非过来 ...
随机推荐
- 自学Zabbix4.2 web监控项创建+item详解
自学Zabbix4.2 web监控项创建+item详解 1. web监控项创建 1.1 Scenario 选项卡 Name: 监控项的名称 Application: 放到哪个应用中 Authenti ...
- 学习Spring Boot:(二十四)多数据源配置与使用
前言 随着业务量增大,可能有些业务不是放在同一个数据库中,所以系统有需求使用多个数据库完成业务需求,我们需要配置多个数据源,从而进行操作不同数据库中数据. 正文 JdbcTemplate 多数据源 配 ...
- 【BZOJ1802】[AHOI2009]checker(动态规划)
[BZOJ1802][AHOI2009]checker(动态规划) 题面 BZOJ 洛谷 题解 首先自己观察一波,发现如果有相邻两个格子都是红色的话,那么显然可以在任意位置都存在一个跳棋.可以让两个位 ...
- 洛谷 P3962 [TJOI2013]数字根 解题报告
P3962 [TJOI2013]数字根 题意 数字根:这个数字每一位的数字加起来求和,反复这个过程直到和小于10. 给出序列\(a\),询问区间\([l,r]\)连续的子区间里最大前5个不同的数字根, ...
- luogu2149 Elaxia的路线 (dijkstra+拓扑dp)
先标记上一个人所有最短路上的边(同时也要标记反向边) 然后拿着另一个人最短路上的边(会构成一个DAG)去做拓扑dp,记从原点到某个点的最大的某个路径的被标记的边的个数 #include<bits ...
- non-member function cannot have cv-qualifier
Q: non-member function unsigned int abs(const T&) cannot have cv-qualifier. template<typename ...
- 在kubernetes中运行单节点有状态MySQL应用
Deploy MySQL https://kubernetes.io/docs/tasks/run-application/run-single-instance-stateful-applicati ...
- Missing artifact com.github.pagehelper:pagehelper:jar:3.4.2-fix的解决方法(最简单的方法)
在网上看的淘淘商城的项目,自己在配置maven项目的时候遇见了这个异常,按照网上教程试了试,一重启各种异常. 后来直接,就更改了自己的maven仓库就ok了. 解决方法: 对比一下,你就能够发现问题, ...
- pycharm git无法使用问题(待解决)
PyCharm 2017.3.1 (Community Edition)Build #PC-173.3942.36, built on December 14, 2017JRE: 1.8.0_152- ...
- 网络编程基础【day10】:IO多路复用
这些名词比较绕口,理解涵义就好.一个epoll场景:一个酒吧服务员(一个线程),前面趴了一群醉汉,突然一个吼一声“倒酒”(事件),你小跑过去给他倒一杯,然后随他去吧,突然又一个要倒酒,你又过去倒上,就 ...