Java 使用lambda表达式转换列表

Java 使用lambda表达式转换列表,java,collections,java-8,java-stream,lambda,Java,Collections,Java 8,Java Stream,Lambda,我创建了一个函数来转换列表中的元素: private List<Hostel> build(List<Hotel> hotels) { return hotels.stream().map(h -> convert(h)).collect(toList()); } 私人列表构建(列出酒店){ return hotels.stream().map(h->convert(h)).collect(toList()); } 但我有一个编译错误:

我创建了一个函数来转换列表中的元素:

private List<Hostel> build(List<Hotel> hotels) {
         return hotels.stream().map(h -> convert(h)).collect(toList());
    }
私人列表构建(列出酒店){
return hotels.stream().map(h->convert(h)).collect(toList());
}
但我有一个编译错误:

required type: List<Hostel>
Provided: List<List<Hostel>>
所需类型:列表
提供:清单

从您的错误看来,
convert(h)
返回一个
列表
,因为当您使用地图时,收集的结果是
列表
,要获得
列表
,您必须使用
平面地图
而不是地图,如下所示:

.flatMap(h -> convert(h).stream())

从您的错误看来,
convert(h)
返回一个
List
,因为当您使用地图时,收集的结果是
List
,要获得
List
,您必须使用
flatMap
而不是地图,如下所示:

.flatMap(h -> convert(h).stream())

什么是
convert()
的返回类型?什么是
convert()
的返回类型?