Java 如何在scala中相应地执行'Collectors.toList()'

Java 如何在scala中相应地执行'Collectors.toList()',java,scala,functional-programming,collectors,partialfunction,Java,Scala,Functional Programming,Collectors,Partialfunction,我在下面的代码中使用了以下类和方法,ids是一个Set[String]: case class PAV () def aggregate(pId: String, iId: Option[String], count: Int): PAV 我尝试了以下方法: 一种是使用java.util.stream.collector tuple._2.get.ids.toStream .map(i => aggregate("some", Option(i), tuple._1.data.`t

我在下面的代码中使用了以下类和方法,
ids
是一个
Set[String]

case class PAV ()

def aggregate(pId: String, iId: Option[String], count: Int): PAV
我尝试了以下方法:

一种是使用
java.util.stream.collector

tuple._2.get.ids.toStream
  .map(i => aggregate("some", Option(i), tuple._1.data.`type`))
  .collect(Collectors.toList[PAV]) // required PartialFunction found Function0
第二,使用
identity

tuple._2.get.ids.toStream
  .map(i => aggregate("some", Option(i), tuple._1.data.`type`))
  .collect(identity(PAV)) // required PartialFunction found PAV.type
我已经尝试了以上基于


好奇地想知道,为什么不提供一个
函数来
收集

您确定您使用的是java.util.stream而不是scala.collection.immutable.stream吗?Scala流上的collect方法采用分部函数作为参数。如果您使用的是scala streams,只需使用
stream.toList()
即可将所有元素收集到一个列表中。我不明白,您想调用
Collectors.toList
?或者想要类似的行为?或者你是在问为什么我们有一个名为collect with的函数具有完全不同的功能?不管你导入了什么,
Set.toStream
返回一个
scala.collection.immutable.Stream
,而不是
java.util.Stream.Stream
collect
是一个从scala的
TraversableLike
重写而来的函数,它的含义与java.util.stream.stream的
collect()
@Naman
tuple._2.get.ids.map(…)。toList
我建议您在使用它之前检查并研究一下Sclaa。