Java 在Scala中构造EnumeratedDistribution实例
我在做一些琐碎的事情时感觉很糟糕:在Scala中创建一个新的实例。我能做的最好的事情是,以下几点应该有用Java 在Scala中构造EnumeratedDistribution实例,java,scala,apache-commons-math,Java,Scala,Apache Commons Math,我在做一些琐碎的事情时感觉很糟糕:在Scala中创建一个新的实例。我能做的最好的事情是,以下几点应该有用 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.ArrayL
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)
…此操作失败,回复中出现以下错误
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)
scala>val dist=new EnumeratedDistribution[Long](映射)
:10:错误:类型不匹配;
找到:java.util.ArrayList[org.apache.commons.math3.util.Pair[Long,scala.Double]]
必需:java.util.List[org.apache.commons.math3.util.Pair[Long,java.lang.Double]]
val dist=新枚举分布[Long](映射)
我的印象是,
java.util.List
是抽象的,因此必须使用类似于ArrayList
的东西。我相信这是件小事。想法?您的问题来自Double
类型:java.lang.Double
是您使用scala.Double
时需要的
只需尝试:
val mapping = new java.util.ArrayList[Pair[Long, java.lang.Double]]()
那么它应该可以工作,因为正如您自己所说,ArrayList
实现了List