我一定做错了什么.我来自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来说并不容易.
请帮忙.
谢谢
其他答案是对的,你怎么没有把新的ListBuffer回来Map,但他们的示例代码是冗长的.一个可变的Map有getOrElse和getOrElseUpdate此方法.此外,除非您有理由不这样做,否则val不要var使用当地人和keys会员.我有时喜欢append到+=.
def put(key: String, value: String) = {
keys.getOrElseUpdate(key, ListBuffer()) += value
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
379 次 |
| 最近记录: |