在Scala中构造EnumeratedDistribution的实例

时间:2014-12-30 13:36:38

标签: java scala apache-commons-math

我正在做一些微不足道的事情:在Scala中创建org.apache.commons.math3.distribution.EnumeratedDistribution的新实例。最好的我能说明以下应该有效...

import org.apache.commons.math3.distribution.EnumeratedDistribution
import org.apache.commons.math3.util.Pair

val p = new Pair(1L, 0.5)
val q = new Pair(2L, 0.5)
val mapping = new java.util.ArrayList[Pair[Long, Double]]()
mapping.add(p)
mapping.add(q)

val dist = new EnumeratedDistribution(mapping)

...这在REPL中出现以下错误...

scala>     val dist = new EnumeratedDistribution[Long](mapping)
<console>:10: error: type mismatch;
 found   : java.util.ArrayList[org.apache.commons.math3.util.Pair[Long,scala.Double]]
 required: java.util.List[org.apache.commons.math3.util.Pair[Long,java.lang.Double]]
       val dist = new EnumeratedDistribution[Long](mapping)

我认为java.util.List是抽象的,因此必须使用类似ArrayList的内容。我相信这是微不足道的。想法?

1 个答案:

答案 0 :(得分:3)

您的问题来自Double类型:当您使用java.lang.Double时,预计会出现scala.Double

只需尝试:

val mapping = new java.util.ArrayList[Pair[Long, java.lang.Double]]()

然后它应该工作,因为你自己说,ArrayList实现List