flatMap需要不必要的转换

时间:2019-09-24 16:27:34

标签: java java-stream

我有以下代码:

List<Person> p = groups.parallelStream()
    .filter(group -> group.size > 0)
    .flatMap(group -> {
        R r = callAsyncMethod(group.id);
        if (r != null) {
            return Stream.of(anotherAsyncCall(r))
        }
        return Stream.empty();
    })
    .collect(Collectors.toList());

anotherAsyncCall返回Person的列表。目前,我收到一个编译错误,要求我将List<Person>更改为List<Object>

我想知道我在做什么错。

1 个答案:

答案 0 :(得分:1)

流可以包含任何类型值,例如,流下面包含字符串列表和整数列表

Stream.of(List.of("Deadpool","Iron Man"),List.of(1,2));

Stream.of

@SafeVarargs
static <T> Stream<T> of(T... values)
  

返回其元素为指定值的顺序有序流。

但是stream()方法只是返回一个以该集合为源的顺序Stream。

default Stream<E> stream()
  

以该集合作为源返回顺序的Stream。