Map Only<Resources<Resource<T>>> Only<List<T>>?

Map Mono<Resources<Resource<T>>> to Mono<List<T>>?

在我的 Java 9 Spring Boot 2 with Spring HATEOAS 应用程序中,我有一个 REST API 返回 Mono<Resources<Resource<T>>>。在应用层,我希望数据是Mono<List<T>>,但是我怎样才能简洁地将Mono<Resources<Resource<T>>>映射到Mono<List<T>>

我期待的是:

public Mono<List<Order>> orders() {
    return rest.orders()
        .flatmap(List::stream)
        .map(r -> r.getContent())
        .collect(Collectors.toList());
}

但是编译失败,因为 List 没有定义 List.stream(Resources<Resource<Order>>rest.orders()returnsMono<Resources<Resource<Order>>>。有什么想法吗?

一个(内存晃动)解决方案:

public Mono<List<Order>> orders() {
    return rest.orders()
        .map(r -> toList(r));
}

private List<Order> toList(Resources<Resource<Order>> resources) {
    List<Order> orders = new ArrayList<>();
    resources.forEach(r -> orders.add(r.getContent());
    return orders;
}