Java 转换单个<;列表<;项目>&燃气轮机;对可观察到的<;项目>;? 目标
我从一个网络请求呼叫中获得一个Java 转换单个<;列表<;项目>&燃气轮机;对可观察到的<;项目>;? 目标,java,rx-java,reactive-programming,Java,Rx Java,Reactive Programming,我从一个网络请求呼叫中获得一个单次。最后,我想将这些项目用作可观察的或单个。我从Item到Item2,使用newitem2(Item Item) 我认为会奏效的 单个项目 .map(Observable::fromIterable)//单个到可观察 .map(新函数(){ //我真的不知道我怎么能在这里做到 }) .subscribeOn(//…/) .观察(//…/); 我想我可以用map转换可观察对象的类型,所以我不太明白为什么第二个map的参数是可观察对象而不是项。 我如何才能正确地实现
单次
。最后,我想将这些项目用作可观察的
或单个
。我从Item
到Item2
,使用newitem2(Item Item)
我认为会奏效的
单个项目
.map(Observable::fromIterable)//单个到可观察
.map(新函数(){
//我真的不知道我怎么能在这里做到
})
.subscribeOn(//…/)
.观察(//…/);
我想我可以用map
转换可观察对象的类型,所以我不太明白为什么第二个map
的参数是可观察对象而不是项。
我如何才能正确地实现这一点?如果我理解正确,您希望将单个
转换为Item2
对象流,并能够按顺序使用它们。在这种情况下,您需要使用.toObservable()
例如:
Single<List<Item>> items = Single.just(new ArrayList<>());
items.toObservable()
.flatMap(new Func1<List<Item>, Observable<Item>>() {
@Override
public Observable<Item> call(List<Item> items) {
return Observable.from(items);
}
})
.map(new Func1<Item, Item2>() {
@Override
public Item2 call(Item item) {
return new Item2(item);
}
})
.subscribeOn(//.../)
.observeOn(//.../);
总结:如果要更改可观察的的类型,请使用.flatMap()
有一些方法:
items.flatmappobservable(Observable::fromIterable).map(Item2::new).toList()
//或
items.toObservable.flatMap(Observable::fromIterable).map(Item2::new.toList())
//或
items.toObservable().flatMapIterable(Functions.identity()).map(Item2::new.toList())
第一个是最简单的。我想你需要使用平面地图。@AluanHaddad就是这样,谢谢。谢谢!当我应该使用flatMap
时,我正在使用map
。是否有一种方法可以将项目的类型更改为项目2
,并保持一个输出?因此,我将有一个单张
作为输入,并将输出一张单张
。是的,您可以在.map()
之后使用.toSingle()
(或者只要.toList()
,如果您不关心具体的单张),而不是toobservable().flatMap()
,您可以使用flatMapObservable()
酷!我不知道
Single<List<Item>> items = Single.just(new ArrayList<>());
items.toObservable()
.flatMap(new Func1<List<Item>, Observable<Item>>() {
@Override
public Observable<Item> call(List<Item> items) {
return Observable.from(items);
}
})
.map(new Func1<Item, Item2>() {
@Override
public Item2 call(Item item) {
return new Item2(item);
}
})
.subscribeOn(//.../)
.observeOn(//.../);
items.toObservable()
.flatMap(Observable::from)
.map(Item2::new)
.subscribeOn(//.../)
.observeOn(//.../)
.subscribe();