如何附加到HashMap中的LinkedList?
给出了以下构造如何附加到HashMap中的LinkedList?,list,scala,map,List,Scala,Map,给出了以下构造 import scala.collection.mutable.HashMap import scala.collection.mutable.LinkedList private var log = new HashMap[String, LinkedList[String]] 如何附加到链接列表中 如果我使用log.get(“some key”).get:+some\u string或log.get(“some key”).get-append-LinkedList(so
import scala.collection.mutable.HashMap
import scala.collection.mutable.LinkedList
private var log = new HashMap[String, LinkedList[String]]
如何附加到链接列表中
如果我使用log.get(“some key”).get:+some\u string
或log.get(“some key”).get-append-LinkedList(some\u string)
则不会追加列表,但会返回包含该值的新列表。HashMap是否只返回关联值的副本而不是该值的引用
离题:声誉很高的人能否将scala添加为支持标题的标记?它应该是,因为它是一种相当有名的编程语言 在尝试了很多次之后回答自己:它使用
列表缓冲区而不是链接列表来工作。使用您的第二个解决方案,它对我有效:
>scala
Welcome to Scala version 2.10.0 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_06).
Type in expressions to have them evaluated.
Type :help for more information.
scala> import scala.collection.mutable.HashMap
import scala.collection.mutable.HashMap
scala> import scala.collection.mutable.LinkedList
import scala.collection.mutable.LinkedList
scala> var log = new HashMap[String, LinkedList[String]]
log: scala.collection.mutable.HashMap[String,scala.collection.mutable.LinkedList[String]] = Map()
scala> log += ("abc" -> LinkedList("apple", "banana", "coconut"))
res0: scala.collection.mutable.HashMap[String,scala.collection.mutable.LinkedList[String]] = Map(abc
-> LinkedList(apple, banana, coconut))
scala> log.get("abc").get append LinkedList("durian")
res1: scala.collection.mutable.LinkedList[String] = LinkedList(apple, banana, coconut, durian)
scala> log("abc")
res2: scala.collection.mutable.LinkedList[String] = LinkedList(apple, banana, coconut, durian)
不过,比get
更好的是
log.get("abc") foreach (_ append LinkedList("elderberry"))
如果找不到值,它不会抛出异常。使用append的版本有效-再次检查。(但最好不要在选项上使用get
——而是使用map
)我已经检查了很多次了。也许有版本差异?我使用的Scala 2.10.1LinkedList
实际上并不是一个常用的集合。最好是完全不可变的,并使用像immutable.Map
和Vector
这样的集合。然后更新日志的引用。这些不可变集合实际上非常有效,因为它们可以重用现有结构。