将Scala Map添加到另一个Scala Map中

时间:2017-10-27 14:53:12

标签: scala collections

我正在尝试将Scala Map对象添加到另一个Scala Map对象中。

我发现了post,但我对此并不了解。我做了一些谷歌搜索,但没有运气。

我创建了一个测试方法,需要帮助才能让它运行。

以下是代码:

package com.foo.bar

import collection.mutable.Map
import org.junit.Test
import org.junit.Assert;

class FooTest {

  @Test
  def testMap() {

    val row =  Map("fooKey" -> "fooValue", "barKey" -> "barValue")
    var dataToPersist = collection.mutable.Map[String, collection.mutable.Map[String, String]]()
    dataToPersist("fooKey" -> row)
    Assert.assertNotNull(dataToPersist("fooKey"))
    }
}

运行测试时出现此错误:

[ERROR] /Users/app/src/test/scala/com/foo/bar/FooTest.scala:14: error: type mismatch;
[INFO]  found   : (String, scala.collection.mutable.Map[String,String])
[INFO]  required: String
[INFO]     dataToPersist("fooKey" -> row)
[INFO]                            ^
[WARNING] one warning found
[ERROR] one error found
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE

谢谢!这是以下工作代码:

package com.foo.bar

import collection.mutable.Map
import org.junit.Test
import org.junit.Assert;

class FooTest {

  @Test
  def testMap() {

    val row =  Map("fooKey" -> "fooValue", "barKey" -> "barValue")
    var dataToPersist = Map[String, collection.mutable.Map[String, String]]()

    dataToPersist += "fooKey" -> row

    Assert.assertNotNull(dataToPersist("fooKey"))
    }
}

1 个答案:

答案 0 :(得分:1)

dataToPersist("fooKey" -> row)

相当于

dataToPersist.apply("fooKey" -> row)

这是用于从地图中检索元素的操作。

如果你想附加一个元素,你可以使用

dataToPersist += "fooKey" -> row

但您必须首先使类型保持一致:rowimmutable.MapdataToPersist期望mutable.Map作为值。您需要将row设为mutable.Map或更改预期的dataToPersist类型。