當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Scala immutable.List用法及代碼示例


用法 一

sealed abstract class List[+A] extends AbstractSeq[A] with LinearSeq[A] with LinearSeqOps[A, List, List[A]] with StrictOptimizedLinearSeqOps[A, List, List[A]] with StrictOptimizedSeqOps[A, List, List[A]] with IterableFactoryDefaults[A, List] with DefaultSerializable

表示類型A元素的有序集合的不可變鏈表類.

這個類帶有兩個實現案例類scala.Nilscala.::,它們實現了抽象成員isEmptyheadtail

此類最適合 last-in-first-out (LIFO)、stack-like 訪問模式。如果您需要其他訪問模式,例如隨機訪問或 FIFO,請考慮使用比 List 更適合此的集合。

性能

時間: ListO(1)前置和頭部/尾部訪問。大多數其他操作是O(n)關於列表中元素的數量。這包括基於索引的元素查找,length,appendreverse.

空間: List實現結構共享的尾列表。這意味著許多操作或者是零成本,或者是 constant-memory 成本。

val mainList = List(3, 2, 1)
val with4 =    4 :: mainList  // re-uses mainList, costs one :: instance
val with42 =   42 :: mainList // also re-uses mainList, cost one :: instance
val shorter =  mainList.tail  // costs nothing as it uses the same 2::1::Nil instances as mainList

也可以看看:

"Scala's Collection Library overview" section on Lists for more information.

注意:

函數列表具有持久化和結構共享的特點,如果使用得當,在某些場景下可以提供可觀的性能和空間消耗優勢。但是,請注意,對同一函數列表具有多個引用的對象(即依賴結構共享的對象)將使用多個列表進行序列化和反序列化,每個列表對應一個引用。 IE。序列化/反序列化後結構共享丟失。

例子:

// Make a list via the companion object factory
val days = List("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday")
// Make a list element-by-element
val when = "AM" :: "PM" :: Nil
// Pattern match
days match {
  case firstDay :: otherDays =>
    println("The first day of the week is: " + firstDay)
  case Nil =>
    println("There don't seem to be any week days.")
}

伴生:

object

源碼:

List.scala

用法 二

object List extends StrictOptimizedSeqFactory[List]

此對象提供一組操作來創建 List.

伴生:

class

源碼:

List.scala

相關用法


注:本文由純淨天空篩選整理自scala-lang.org大神的英文原創作品 immutable.List。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。