如何从地图返回非空项目的列表映射?

我有一段代码如下(简化来解释这个问题)。 从rawData中,我想过滤出那些没有在converter器中提供的converter器types,然后剩余的将data转换为listitem

 data class RawData(val type: String, val data: Data) interface Converter { fun convert(data: Data): ListItem } fun transform(): List { val providerTypeMap = modelViewProvider.associateBy({it.type}, {it}) return rawDataList.filter { converter[it.type] != null }.map { converter[it.type]?.create(it.data) ?: object: ListItem {} } } 

注意:我希望返回types为List而不是List 。 为了做到这一点,我需要有这条线

 converter[it.type]?.create(it.data) ?: object: ListItem {} 

哪个给我??:是非常难看的,因为我们知道那时候,我们已经过滤了,只保留那个converter[it.type] != null

有没有办法让我摆脱??: ListItem{}在我的代码?

有一个解决方案:

 return rawDataList.mapNotNull { converter[it.type]?.create(it.data) } 

但是我不知道Kotlin的版本mapNotNull()方法出现了。 如果你没有它,你可以使用施工map {}.filterNotNull()或编写你自己的mapNotNull扩展方法。