需求是获取系统所有的文件,代码如下:

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 的例子相关推荐

  1. 生怕认可java+flatmap,RxJava 操作符flatMap 与 concatMap详解

    本文独家发布到公众号:Android技术杂货铺 封面图-pixabay 近两年来,RxJava可以说是异常的火爆,受到众多开发者的追捧与青睐,虽然后入门的门槛较高,学习成本较大,但是还是掀起一场学习R ...

  2. 西方人很难理解,为什么中国普通人对华为抱有那么大的好感?

    中国人普遍有敝帚自珍的情结,何况华为不是敝帚,比旧扫帚强多了,可能是近现代中国人能拿得出手的少数几个公司,堪比金箍棒. 西方人很难理解,一个在他们眼中威胁通讯安全,很可能在产品中留有技术后门的企业,为 ...

  3. flatmap 与map 的区别 java_map和flatmap的区别+理解、学习与使用 Java 中的 Optional

    orElse() 和 orElseGet()的不同之处 乍一看,这两种方法似乎起着同样的作用.然而事实并非如此.我们创建一些示例来突出二者行为上的异同. 我们先来看看对象为空时他们的行为: @Test ...

  4. java看不起c语言,为什么我感觉Java比C语言难呢?总觉得逻辑上没有C语言好理解。比如各种继承介面。包之间的关系。...

    为什么我感觉Java比C语言难呢?总觉得逻辑上没有C语言好理解.比如各种继承介面.包之间的关系.以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我 ...

  5. Java零基础学习难吗

    java编程是入行互联网的小伙伴们大多数的选择,那么对于零基础的小伙伴来说Java零基础学习难吗?如果你是初学者,你可以很好的理解java编程语言.并不困难.如果你的学习能力比较高,那么你对Java的 ...

  6. Java 8 Stream Api 中的 map和 flatMap 操作

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | 公众号「码农小胖哥」 1.前言 Java 8  ...

  7. Docker 概念很难理解?一文搞定 Docker 端口绑定

    作者 | Dieter Jordens 译者 | 苏本如,责编 | 夕颜 出品 | CSDN(ID:CSDNnews) 以下为译文: 作为初级开发人员的你,是不是参加过这样的面试,在面试中面试官希望你 ...

  8. Java继承注意事项难点理解

    继承(干货0.0) 继承是存在与面向对象程序中两个类之间的一种关系.被继承的类称为父类或超类,而继承父类的类称为子类.父类实际上是所有子类的公共域和公共方法的集合.每个子类是父类的特殊化. Java继 ...

  9. java和前端哪个难学?

    java和前端哪个难学? 不是同一样东西,无法比较. Java 和 JavaScript 哪个难学? 前端 和 后端 哪个难学? 问Java 和 前端哪个难学, 就像在问牛排和中餐哪个好吃一样.Jav ...

最新文章

  1. kvm上添加万兆网卡_部署kvm(二)
  2. 基于K-gram的winnowing特征提取剽窃查重检测技术(概念篇)
  3. java I/O思维导图
  4. 让乔布斯立足肩上的C语言之父
  5. Web前端中级认证php,1+x 证书 Web 前端开发中级理论考试 (试卷 6 )
  6. 多重信号辅助音频分离,让你在嘈杂环境也能指哪听哪儿
  7. python操作mysql(一)MySQLdb模块安装和数据库基本操作
  8. 【tricks】深度神经网络模型训练中的 tricks(原理与代码汇总)
  9. SketchUp Pro 2022 草图大师设计软件 Mac
  10. matlab朦胧的去雾、加雾算法
  11. 暨南大学人文社科a类期刊_关于调整人文社科B类和C类期刊目录的通知
  12. 计算机无法打开浏览器,Internet选项打不开怎么办?IE浏览器internet选项无法打开解决方法...
  13. 苹果IOS9为加强个人隐私信息保护强制HTTPS,APP开发者需申请SSL证书
  14. 苹果原装转接头不能连html,变革之际 iPhone 7P原装lightning耳机及转接头拆解
  15. Windows访问共享文件 smb samba
  16. Centos7系统PC安装后在工控机无法运行问题解决
  17. Master横扫围棋界 AI智能风暴来袭
  18. 2022年施工员-装饰方向-通用基础(施工员)考试题库及施工员-装饰方向-通用基础(施工员)证考试
  19. 各种波形文件vcd,vpd,shm,fsdb生成的方法
  20. 一篇文章讲清楚VO,BO,PO,DO,DTO的区别

热门文章

  1. python工作空间_Python保存工作空间的数据(pickle your data)
  2. eplise怎么连接数据库_Eclipse怎么打开数据库?Eclipse连接oracle等数据库的教程
  3. oracle 的 父子关系,oracle父子关系树递归排序要注意什么?
  4. PHP与Javascript的混合测试
  5. Hibernate中的query.setFirstResult(),query.setMaxResults();
  6. MDX Step by Step 读书笔记(三) - Understanding Tuples (理解元组)
  7. Android P2P语音通话实现 【转】http://macleo.iteye.com/blog/1707455
  8. 古田县争取高速公路的历程
  9. 求树中某结点的父结点(长子-兄弟表示法)
  10. ComponentOne Ultimate 2012 v2 新特性