RxJava - 如何获取列表的第一个元素并将其作为Observable

时间:2016-07-05 20:47:59

标签: rx-java reactive-programming

让我们观察一下:

Observable<List<UserProfile>> findUser =service.getUserProfiles()

如何对其进行转换,使其返回第一个元素作为Observable(而不是仅包含第一个元素的Observable列表)。我尝试了first()takeFirst(),但它仍会返回一个列表。

2 个答案:

答案 0 :(得分:17)

映射它!

Observable<List<UserProfile>> findUser = service.getUserProfiles();
Observable<UserProfile> firstUser = findUser
    .filter(list -> !list.isEmpty())
    .map(list -> list.get(0));

答案 1 :(得分:3)

如果没有看到getUserProfile()会发生什么变得复杂,但是这个怎么样呢

@Test
public void getFirstUser(){
    Observable<List<Integer>> findUser =Observable.just(Arrays.asList(1,2,3));
    Observable<Integer> user = findUser
            .flatMap(Observable::from)
            .first();
    user.subscribe(System.out::println);
}