1

以下を考えると:

mergeMap:HashMap[String,HashSet[String]]

val x 型が HashMap[String,Integer] をチェックしないのはなぜですか?

val x = HashMap[String,Integer]().withDefault(_ => 1).++( mergeMap.map { case(id,codes) => codes } )

代わりに、以下を型チェックします: scala.collection.mutable.Iterable[Serializable with ScalaObject with Equals]

どうすればそうさせることができますか?

ありがとう!

4

1 に答える 1

1

何がしたいのかよくわからないのですが、こんな感じですか?

    scala> val mergeMap = Map(("key1", "value1"), ("key2", "value2"), ("key3", "value1"))
    mergeMap: scala.collection.immutable.Map[java.lang.String,java.lang.String] = Map(key1 -> value1, key2 -> value2, key3 -> value1)

    scala> mergeMap.values.toSet.map((_ : String, 1)).toMap
    res12: scala.collection.immutable.Map[String,Int] = Map(value1 -> 1, value2 -> 1)

最初のものは、文字列から文字列へのマップを作成します(例のように文字列から文字列のコレクションへではありません)。

2 つ目はマップからすべての値を取得し、最初のマップの値をキーとして、デフォルト値 1 を各値として使用して新しいマップを作成します。重複したキーは破棄されます (「toSet」ステップで破棄され、「toMap」ステップで再度破棄されます)。

于 2013-06-19T13:04:12.167 に答える