生怕认可java+flatmap,RxJava 好难理解的一个 FlatMap 的例子
需求是获取系统所有的文件,代码如下:
File file = new File(Environment.getExternalStorageDirectory().getPath());
//定义一个被观察者
Observable observable = Observable.just(file)
.flatMap(new Function>() {
@Override
public ObservableSource apply(@NonNull File file) throws Exception {
return listFile(file);
}
});
//定义一个观察者
Observer observer = new Observer() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(File file) {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
};
//订阅
observable.subscribe(observer);
}
//递归文件,
private Observable listFile(File file) {
if (file.isDirectory()) {
Observable ob = Observable.fromArray(file.listFiles())
.flatMap(new Function>() {
@Override
public ObservableSource apply(@NonNull File file) throws Exception {
return listFile(file);
}
});
return ob;
} else {
return Observable.just(file);
}
}
平时使用FlatMap的例子,都是集合转换为单个元素,按照“平铺”的思路,比较能理解;这里直接FlatMap结合递归,搞得人晕晕的,不知道有没有什么好理解的思路?
生怕认可java+flatmap,RxJava 好难理解的一个 FlatMap 的例子相关推荐
- 生怕认可java+flatmap,RxJava 操作符flatMap 与 concatMap详解
本文独家发布到公众号:Android技术杂货铺 封面图-pixabay 近两年来,RxJava可以说是异常的火爆,受到众多开发者的追捧与青睐,虽然后入门的门槛较高,学习成本较大,但是还是掀起一场学习R ...
- 西方人很难理解,为什么中国普通人对华为抱有那么大的好感?
中国人普遍有敝帚自珍的情结,何况华为不是敝帚,比旧扫帚强多了,可能是近现代中国人能拿得出手的少数几个公司,堪比金箍棒. 西方人很难理解,一个在他们眼中威胁通讯安全,很可能在产品中留有技术后门的企业,为 ...
- flatmap 与map 的区别 java_map和flatmap的区别+理解、学习与使用 Java 中的 Optional
orElse() 和 orElseGet()的不同之处 乍一看,这两种方法似乎起着同样的作用.然而事实并非如此.我们创建一些示例来突出二者行为上的异同. 我们先来看看对象为空时他们的行为: @Test ...
- java看不起c语言,为什么我感觉Java比C语言难呢?总觉得逻辑上没有C语言好理解。比如各种继承介面。包之间的关系。...
为什么我感觉Java比C语言难呢?总觉得逻辑上没有C语言好理解.比如各种继承介面.包之间的关系.以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我 ...
- Java零基础学习难吗
java编程是入行互联网的小伙伴们大多数的选择,那么对于零基础的小伙伴来说Java零基础学习难吗?如果你是初学者,你可以很好的理解java编程语言.并不困难.如果你的学习能力比较高,那么你对Java的 ...
- Java 8 Stream Api 中的 map和 flatMap 操作
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | 公众号「码农小胖哥」 1.前言 Java 8 ...
- Docker 概念很难理解?一文搞定 Docker 端口绑定
作者 | Dieter Jordens 译者 | 苏本如,责编 | 夕颜 出品 | CSDN(ID:CSDNnews) 以下为译文: 作为初级开发人员的你,是不是参加过这样的面试,在面试中面试官希望你 ...
- Java继承注意事项难点理解
继承(干货0.0) 继承是存在与面向对象程序中两个类之间的一种关系.被继承的类称为父类或超类,而继承父类的类称为子类.父类实际上是所有子类的公共域和公共方法的集合.每个子类是父类的特殊化. Java继 ...
- java和前端哪个难学?
java和前端哪个难学? 不是同一样东西,无法比较. Java 和 JavaScript 哪个难学? 前端 和 后端 哪个难学? 问Java 和 前端哪个难学, 就像在问牛排和中餐哪个好吃一样.Jav ...
最新文章
- kvm上添加万兆网卡_部署kvm(二)
- 基于K-gram的winnowing特征提取剽窃查重检测技术(概念篇)
- java I/O思维导图
- 让乔布斯立足肩上的C语言之父
- Web前端中级认证php,1+x 证书 Web 前端开发中级理论考试 (试卷 6 )
- 多重信号辅助音频分离,让你在嘈杂环境也能指哪听哪儿
- python操作mysql(一)MySQLdb模块安装和数据库基本操作
- 【tricks】深度神经网络模型训练中的 tricks(原理与代码汇总)
- SketchUp Pro 2022 草图大师设计软件 Mac
- matlab朦胧的去雾、加雾算法
- 暨南大学人文社科a类期刊_关于调整人文社科B类和C类期刊目录的通知
- 计算机无法打开浏览器,Internet选项打不开怎么办?IE浏览器internet选项无法打开解决方法...
- 苹果IOS9为加强个人隐私信息保护强制HTTPS,APP开发者需申请SSL证书
- 苹果原装转接头不能连html,变革之际 iPhone 7P原装lightning耳机及转接头拆解
- Windows访问共享文件 smb samba
- Centos7系统PC安装后在工控机无法运行问题解决
- Master横扫围棋界 AI智能风暴来袭
- 2022年施工员-装饰方向-通用基础(施工员)考试题库及施工员-装饰方向-通用基础(施工员)证考试
- 各种波形文件vcd,vpd,shm,fsdb生成的方法
- 一篇文章讲清楚VO,BO,PO,DO,DTO的区别
热门文章
- python工作空间_Python保存工作空间的数据(pickle your data)
- eplise怎么连接数据库_Eclipse怎么打开数据库?Eclipse连接oracle等数据库的教程
- oracle 的 父子关系,oracle父子关系树递归排序要注意什么?
- PHP与Javascript的混合测试
- Hibernate中的query.setFirstResult(),query.setMaxResults();
- MDX Step by Step 读书笔记(三) - Understanding Tuples (理解元组)
- Android P2P语音通话实现 【转】http://macleo.iteye.com/blog/1707455
- 古田县争取高速公路的历程
- 求树中某结点的父结点(长子-兄弟表示法)
- ComponentOne Ultimate 2012 v2 新特性