2

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. これは些細なことだと確信しています。考え?

4

1 に答える 1

3

あなたの問題はDoubletype: java.lang.Doubleis expected while you useから来ていますscala.Double

単に試してください:

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

ArrayListあなたが自分で言ったように、実装するので、それはうまくいくはずですList

于 2014-12-30T15:34:50.000 に答える