Lambda表达式的几种实现过程
1.无参数+语句(代码块):适用于匿名内部类中方法无参数的情况
private void threadTest(){
//普通写法
new Thread(new Runnable(){
@Override
public void run(){
...
}
}).start();
//使用lambda表达式写法
new Thread(() -> Log.d(TAG, "This is a lambda Thread")).start();
}
2.有参数+语句:适用于匿名内部类中方法只有一个参数的情况
private void setOnClick(){
//普通写法
findViewById(R.id.button).setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
Log.d(TAG, "This is a general onClick");
}
});
//使用lambda表达式写法
findViewById(R.id.button).setOnClickListener(v -> Log.d(TAG, "This is a general onClick"));
}
3.有参数+代码块:适用于匿名内部类中方法不止一个参数的情况
private void setOnChecked(){
CheckBox checkBox = (CheckBox) findViewById(R.id.checkBox);
//普通写法
checkBox.setOnCheckedChangeListener(new CompoundButton.onCheckedChangeListener(){
@Override
public void onCheckedChange(CompoundButton buttonView, boolean isChecked){
Log.d(TAG, "This is a general onCheckedChange");
}
});
//使用Lambda表达式写法
checkBox.setOnCheckedChangeListener((buttonView, isChecked) ->{
Log.d(...);
});
}
4.链模式
Observable.from(Arrays.asList(1,2,3,4,5,6))
.filter(new Func1<Integer, Boolean>(){
@Override
public Boolean call(Integer integer){
return integer % 2 == 0;
}
})
.map(new Fun1<Integer, Integer>(){
@Override
public Integer call(Integer integer){
return integer * integer;
}
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Action1<Integer>(){
@Override
public void call(Integer integer){
System.out.println(integer);
}
});
//使用lambda表达式的写法
Observable.from(Arrays.asList(1,2,3,4,5,6))
.filter(integer -> integer % 2 == 0;)
.map(integer -> integer * integer);
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(integer -> Ststem.out.println(integer));
Lambda表达式的几种实现过程的更多相关文章
- C++使用模板、函数指针、接口和lambda表达式这四种方法做回调函数的区别比较
在C++中,两个类之间存在一种关系,某个类需要另外一个类去完成某一个功能,完成了之后需要告知该类结果,这种最普通最常见的需求,往往使用回调函数来解决. 如题,我总结下来有这么四种方式可以完成这项功能, ...
- Python:lambda表达式的两种应用场景
01 lambda表达式 python书写简单,功能强大, 迅速发展成为 AI ,深度学习的主要语言.介绍Python中的lambda表达式,注意到,它只是一个表达式,不是语句啊. lambda的语法 ...
- Lambda表达式的几种使用方式
Lambda 的表达式的编写格式如下: x=> x * 1.5 当中 “ => ” 是 Lambda 表达式的操作符,在左边用作定义一个参数列表,右边可以操作这些参数. 例一, 先把 in ...
- java中使用Lambda表达式的5种语法
1,标准写法 思考下述情况: String[] arr = {"program", "creek", "is", "a" ...
- python lambda表达式的两种用处
1 用处1定义匿名函数 不带参数的: a = ") 带参数的 b = lambda x, y:x * y 2 当函数作为参数时,直接为该函数传参. def func1(m, n): retu ...
- 从匿名方法到 Lambda 表达式的推演过程
Lambda 表达式是一种可用于创建委托或表达式目录树类型的匿名函数. 通过使用 lambda 表达式,可以写入可作为参数传递或作为函数调用值返回的本地函数. 以上是msdn官网对Lambda 表达式 ...
- 委托,匿名函数和lambda表达式
很早之前就接触到了委托,但是一直对他用的不是太多,主要是本人是菜鸟,能写的比较高级的代码确实不多,但是最近在看MSDN微软的类库的时候,发现了微软的类库好多都用到了委托,于是决定好好的研究研究,加深一 ...
- 「C++11」Lambda 表达式
维基百科上面对于 lambda 的引入是如下描述的: 在标准 C++,特别是当使用 C++ 标准程序库算法函数诸如 sort 和 find.用户经常希望能够在算法函数调用的附近定义一个临时的述部函数( ...
- .NET中那些所谓的新语法之三:系统预定义委托与Lambda表达式
开篇:在上一篇中,我们了解了匿名类.匿名方法与扩展方法等所谓的新语法,这一篇我们继续征程,看看系统预定义委托(Action/Func/Predicate)和超爱的Lambda表达式.为了方便码农们,. ...
随机推荐
- Netty 学习笔记(3) ------ ChannelPipeline 和 ChannelHandler
ChannelPipeline通过责任链设计模式组织逻辑代码(ChannelHandler),ChannelHander就如同Servlet的Filter一样一层层处理Channel的读写数据. Ch ...
- kotlin中使用Handler
kotlin中使用Handler jumpToPayHandler = Handler { var questionformModel = QuetionFormModel(2, spinner.te ...
- ElasticSearch(二)Kibana、版本控制
Kibana简介: Kibana可视化界面 Kibana是一个开源的分析和可视化平台,设计用于和Elasticsearch一起工作. 你用Kibana来搜索,查看,并和存储在Elasticsearch ...
- 数据库(十三):MySQL内置方法
进击のpython ***** 数据库--MySQL内置方法 目录 数据库--MySQL内置方法 视图 增加 修改 删除 触发器 创建 使用 删除 存储过程 无参 有参 事务 代码实现 视图 视图是一 ...
- C# File.Exists 判断系统文件,警惕32位和64位的差异
今天在调试一个Winform程序,使用File.Exists 判断一个已经存在的驱动文件,程序一直返回false.因为驱动文件属于系统目录,心想难道是权限不够导致的?然后用管理员身份运行软件,依然返回 ...
- lua中 table.getn(t) 、#t、 table.maxn(t) 这三个什么区别?
lua中 table.getn(t) .#t. table.maxn(t) 这三个什么区别? RTlocal t = {1,888,x= 999,b=2,5,nil,6,7,[10]=1,8,{z = ...
- 人车识别实验丨华为ModelArts VS 百度Easy DL硬核体验
摘要:想了解时下流行的自动驾驶相关AI模型吗?接下来就用华为云的ModelArts和百度的Easy DL带你体验一下AI平台是怎么进行模型训练的. 华为ModelArts自动学习 VS 百度Easy ...
- Python之filter、map、reduce函数
简介三函数: 高阶函数:一个函数可以接收另一个函数作为参数,这种函数称之为高阶函数. filter.map.reduce三个函数都是高阶函数,且语法都一致:filter/map/reduce(func ...
- 集合的一些实例的demo实现
按照斗地主的规则,完成洗牌发牌的动作. 具体规则: 使用54张牌打乱顺序,三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌. 准备牌: 牌可以设计为一个ArrayList,每个字符串为一 ...
- three.js 制作一个三维的推箱子游戏
今天郭先生发现大家更喜欢看我发的three.js小作品,今天我就发一个3d版本推箱子的游戏,其实webGL有很多框架,three.js并不合适做游戏引擎,但是可以尝试一些小游戏.在线案例请点击博客原文 ...