Scala列表和选项

Ada*_*ies 3 scala

我一定做错了什么.我来自Java背景,所以这个东西应该很容易.

我想在列表中保存的键和多个值之间创建映射:

var keys = Map[String, ListBuffer[String]]()
Run Code Online (Sandbox Code Playgroud)

但是,我似乎无法在列表中添加值!我究竟做错了什么??

def put(key: String, value: String) = {
  var valueOption = keys.get(key)
  var values = valueOption.getOrElse(ListBuffer)
  values += value
  // value not added
}
Run Code Online (Sandbox Code Playgroud)

我不想使用MultiMap,因为我需要做一些其他操作,这些操作对MultiMap来说并不容易.

请帮忙.

谢谢

Rob*_*b N 7

其他答案是对的,你怎么没有把新的ListBuffer回来Map,但他们的示例代码是冗长的.一个可变的MapgetOrElsegetOrElseUpdate此方法.此外,除非您有理由不这样做,否则val不要var使用当地人和keys会员.我有时喜欢append+=.

def put(key: String, value: String) = {
    keys.getOrElseUpdate(key, ListBuffer()) += value
}
Run Code Online (Sandbox Code Playgroud)