Kar*_*lek 30 scala scala-collections
(把它作为这个问题的后续内容 - 没有Scala可变列表)
我想在scala中使用一个可变列表.我可以选择
scala.collection.mutable.DoubleLinkedListscala.collection.mutable.LinkedListscala.collection.mutable.ListBufferscala.collection.mutable.MutableList 哪个好,但是什么是"标准",推荐的,惯用的scala方式?我只想使用一个列表,我可以在后面添加东西.
编辑:
好的,进一步扩展.
我正在使用HashMap,其中"列表"(我的意思是一般意义上说)将是有价值的.然后,我正在读取文件中的内容,并且对于每一行,我想在散列映射中找到正确的列表并将值附加到列表中.
axe*_*l22 35
取决于你的需要.
DoubleLinkedList是一个链接列表,允许您在节点列表中来回遍历.使用它prev和next引用分别转到上一个或下一个节点.
LinkedList是一个单链表,所以没有prev指针 - 如果你只是一直遍历列表的下一个元素,这就是你需要的.
编辑:请注意,上面的两个内容旨在内部用作更复杂的列表结构的构建块,如MutableList支持高效追加的mutable.Queues 和s.
上面的两个集合都具有线性时间追加操作.
ListBuffer是一个缓冲类.虽然它由单链表数据结构支持,但它不会将next指针暴露给客户端,因此您只能使用迭代器和遍历它来遍历它foreach.但是,它的主要用途是作为一个缓冲区和一个不可变列表构建器 - 你可以通过它来附加元素+=,当你调用时result,你可以非常高效地恢复功能immutable.List.与可变和不可变列表不同,追加和前置操作都是常量时间 - 您可以+=非常有效地追加到最后.
MutableList在内部使用,除非您计划基于单链表数据结构实现自定义集合类,否则通常不使用它.例如,可变队列继承此类.MutableListclass还具有高效的常量时间追加操作,因为它维护对列表中最后一个节点的引用.
dre*_*xin 10
如果你想附加物品,你根本不应该使用它List.List当你想要预先添加项目时,s很好.请ArrayBuffer改用.