Java scala-将mahout向量转换为数组

Java scala-将mahout向量转换为数组,java,arrays,scala,vector,mahout,Java,Arrays,Scala,Vector,Mahout,我正在使用mahout math vector(org.apache.mahout.math.vector) 并希望将其转换为数组 在上一页中,我没有找到可用于转换的函数 最简单的转换方法是什么(使用scala)?您可以使用JavaConverters(我没有mahout,因此代码中可能有一个小错误): scalaArray现在包含Vector.Element对象。如果要使用双值,则必须映射元素(使用.get()): Mahout的最新主版本有一个功能非常全面的Scala API和线性代数DSL

我正在使用mahout math vector(
org.apache.mahout.math.vector
) 并希望将其转换为数组

在上一页中,我没有找到可用于转换的函数


最简单的转换方法是什么(使用scala)?

您可以使用JavaConverters(我没有mahout,因此代码中可能有一个小错误):

scalaArray现在包含Vector.Element对象。如果要使用双值,则必须映射元素(使用.get()):


Mahout的最新主版本有一个功能非常全面的Scala API和线性代数DSL。新代码是用Scala编写的,目标是Spark。事实上,Hadoop mapreduce不接受任何新的贡献,只有Spark

Scala和Spark绑定如下所述:

甚至还有一个Scala Shell,您可以在其中以交互方式试验许多核心Mahout代码


鉴于Scala中操作向量和矩阵的新方法,您可能不需要数组。

@webSpider为什么使用var而不是val?:-)在Scala(和其他函数式编程语言)中,不变性优于可变性。这有一些优点,例如,您可以更好地解释程序中发生的事情,并简化并发编程。这取决于。有时有必要使用易变性,但应尽量减少它。网络上有很多关于这个话题的文章,我建议读几篇。
val javaIterable = mahoutVector.all()
import scala.collection.JavaConverters.iterableAsScalaIterableConverter
val scalaIterable = javaIterable.asScala
val scalaArray = scalaIterable.toArray
[same first three lines as above]
val scalaArray = scalaIterable.map(_.get()).toArray