transform the items emitted by an Observable by applying a function to each item.java
因此流程應該是這樣app
Observable.just(new circleMoney(), new circleMoney()) .subscribe(new Action1<circleMoney>() { @Override public void call(circleMoney money) { money.SayInfo(); } });
//先定義個錢幣接口 public interface SquareMoney { void SayInfo(); //打印型號 void SetInfo(String info); //設置型號 } //而後使用map改形成發方錢幣 Observable.just(new circleMoney(), new circleMoney()) .map(new Func1<circleMoney, SquareMoney>() { @Override public SquareMoney call(circleMoney circleMoney) { //類型轉換,向上轉換爲方形錢幣 SquareMoney circleMoney1 = (SquareMoney) circleMoney; //設置封裝信息爲方形 circleMoney1.SetInfo("SquareMoney"); return circleMoney1; } }) .subscribe(new Action1<SquareMoney>() { @Override public void call(SquareMoney money) { //打印最終封裝信息 money.SayInfo(); } });
//小套娃 class SmallMatryoshka { private String name = "小套娃";//名字 } //大套娃 class BigMatryoshka { private String name = "大套娃";//名字 private List<SmallMatryoshka> smallMatryoshkaList;//包含小套娃的列表 } //先建立一堆小套娃,放到List中 ArrayList<SmallMatryoshka> smallMatryoshkas = new ArrayList<>(); smallMatryoshkas.add(new SmallMatryoshka()); smallMatryoshkas.add(new SmallMatryoshka()); smallMatryoshkas.add(new SmallMatryoshka()); // 建立大套娃,並將小套娃列表放到大套娃中 BigMatryoshka bigMatryoshka = new BigMatryoshka(); bigMatryoshka.smallMatryoshkaList = smallMatryoshkas; //大套娃列表,把大套娃放進去 List<BigMatryoshka> bigMatryoshkas = new ArrayList<BigMatryoshka>(); bigMatryoshkas.add(bigMatryoshka); bigMatryoshkas.add(bigMatryoshka); bigMatryoshkas.add(bigMatryoshka); //輸出大套娃列表裏,大套娃包含的全部的小套娃 Observable.from(bigMatryoshkas) .flatMap(new Func1<BigMatryoshka, Observable<SmallMatryoshka>>() { @Override public Observable<SmallMatryoshka> call(BigMatryoshka bigMatryoshka1) { //轉換成Observable後再次發送 return Observable.from(bigMatryoshka1.smallMatryoshkaList); } }) .subscribe(new Action1<SmallMatryoshka>() { @Override public void call(SmallMatryoshka smallMatryoshka) { //打印套娃名稱 LogUtils.e(smallMatryoshka.name); } });