JAVA map,生怕認可java+flatmap,RxJava 好難理解的一個 FlatMap 的例子

 2023-11-30 阅读 28 评论 0

摘要:需求是獲取系統所有的文件,代碼如下:JAVA map?File file = new File(Environment.getExternalStorageDirectory().getPath());//定義一個被觀察者Observable observable = Observable.just(file).flatMap(new Function>() {@Overridepublic Obs

需求是獲取系統所有的文件,代碼如下:

JAVA map?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結合遞歸,搞得人暈暈的,不知道有沒有什么好理解的思路?

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/4/186662.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息