Kotlin映射函数返回一个流,不是collect()的Java等价物
Kotlin映射函数返回一个流,不是collect()的Java等价物,kotlin,java-stream,Kotlin,Java Stream,map返回一个流,而不是一个列表。因此分配product.media=cleanedMedia将不起作用。我必须在这里使用collect,才能让它正常工作。但是我经常看到人们说,map相当于Java的collect。(此处举例说明:) 使用纯Kotlin列表 在Product类中,确保删除import java.util.List以使用Kotlin的列表 class Product { var media: List<Media> = listOf() } 但是我经常看到人们说
map
返回一个流,而不是一个列表
。因此分配product.media=cleanedMedia
将不起作用。我必须在这里使用collect
,才能让它正常工作。但是我经常看到人们说,map
相当于Java的collect
。(此处举例说明:)
使用纯Kotlin列表
在Product
类中,确保删除import java.util.List
以使用Kotlin的列表
class Product {
var media: List<Media> = listOf()
}
但是我经常看到人们说,map
相当于Java的collect
首先:kotlin有多个项目迭代方案:
- 默认值:使用物化集合。例如,所有运算符返回最终集合,例如-
- Kotlin序列:它们看起来像Java流,例如,它们返回惰性迭代器。请检查一下电话号码
- 科特林合作项目也有。它是流式操作符,返回通量
*在大多数情况下,它更快、更简单,因此最好使用它。我看不到任何类似的东西 map相当于collect for Java 在链接页面中。唯一提到的
collect
是
这样做的一个好处是,不需要从集合到流的初始转换,也不需要从流到集合的最终转换–使用collect()调用
而map()
只是一个例子;它同样可以是过滤器
,平面图
,以及其中的一些序列,等等
所以它说
stream()
和collect(Collectors.toList())
都可以被抛出(但只能一起抛出!),并且可能需要重命名某些方法 你能告诉我你到底是什么意思吗。当我省略stream
时,语法从这句话中变为红色,我假设您有一个java.util.List
,而不是一个KotlinList
。将java列表转换为kotlin列表,它就会工作。如何转换?它来自java库?
class Product {
var media: List<Media> = listOf()
}
fun cleanup(product: Product) {
product.media = product.media.filter { "failed" == it.purpose }
}