<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # Scala List(列表) Scala 列表類似于數組,它們所有元素的類型都相同,但是它們也有所不同:列表是不可變的,值一旦被定義了就不能改變,其次列表 具有遞歸的結構(也就是鏈接表結構)而數組不是。。 列表的元素類型 T 可以寫成 List[T]。例如,以下列出了多種類型的列表: ``` // 字符串列表 val site: List[String] = List("Runoob", "Google", "Baidu") // 整型列表 val nums: List[Int] = List(1, 2, 3, 4) // 空列表 val empty: List[Nothing] = List() // 二維列表 val dim: List[List[Int]] = List( List(1, 0, 0), List(0, 1, 0), List(0, 0, 1) ) ``` 構造列表的兩個基本單位是 **Nil** 和 **::** **Nil** 也可以表示為一個空列表。 以上實例我們可以寫成如下所示: ``` // 字符串列表 val site = "Runoob" :: ("Google" :: ("Baidu" :: Nil)) // 整型列表 val nums = 1 :: (2 :: (3 :: (4 :: Nil))) // 空列表 val empty = Nil // 二維列表 val dim = (1 :: (0 :: (0 :: Nil))) :: (0 :: (1 :: (0 :: Nil))) :: (0 :: (0 :: (1 :: Nil))) :: Nil ``` ## 列表基本操作 Scala列表有三個基本操作: * `head` 返回列表第一個元素 * `tail` 返回一個列表,包含除了第一元素之外的其他元素 * `isEmpty` 在列表為空時返回true 對于Scala列表的任何操作都可以使用這三個基本操作來表達。實例如下: ``` object Test { def main(args: Array[String]) { val site = "Runoob" :: ("Google" :: ("Baidu" :: Nil)) val nums = Nil println( "第一網站是 : " + site.head ) println( "最后一個網站是 : " + site.tail ) println( "查看列表 site 是否為空 : " + site.isEmpty ) println( "查看 nums 是否為空 : " + nums.isEmpty ) } } ``` 執行以上代碼,輸出結果為: ``` $ vim Test.scala $ scala Test.scala 第一網站是 : Runoob 最后一個網站是 : List(Google, Baidu) 查看列表 site 是否為空 : false 查看 nums 是否為空 : true ``` ## 連接列表 你可以使用 **:::** 運算符或 **List.:::()** 方法或 **List.concat()** 方法來連接兩個或多個列表。實例如下: ``` object Test { def main(args: Array[String]) { val site1 = "Runoob" :: ("Google" :: ("Baidu" :: Nil)) val site2 = "Facebook" :: ("Taobao" :: Nil) // 使用 ::: 運算符 var fruit = site1 ::: site2 println( "site1 ::: site2 : " + fruit ) // 使用 Set.:::() 方法 fruit = site1.:::(site2) println( "site1.:::(site2) : " + fruit ) // 使用 concat 方法 fruit = List.concat(site1, site2) println( "List.concat(site1, site2) : " + fruit ) } } ``` 執行以上代碼,輸出結果為: ``` $ vim Test.scala $ scala Test.scala site1 ::: site2 : List(Runoob, Google, Baidu, Facebook, Taobao) site1.:::(site2) : List(Facebook, Taobao, Runoob, Google, Baidu) List.concat(site1, site2) : List(Runoob, Google, Baidu, Facebook, Taobao) ``` ## List.fill() 我們可以使用 List.fill() 方法來創建一個指定重復數量的元素列表: ``` object Test { def main(args: Array[String]) { val site = List.fill(3)("Runoob") // 重復 Runoob 3次 println( "site : " + site ) val num = List.fill(10)(2) // 重復元素 2, 10 次 println( "num : " + num ) } } ``` 執行以上代碼,輸出結果為: ``` $ vim Test.scala $ scala Test.scala site : List(Runoob, Runoob, Runoob) num : List(2, 2, 2, 2, 2, 2, 2, 2, 2, 2) ``` ## List.tabulate() List.tabulate() 方法是通過給定的函數來創建列表。 方法的第一個參數為元素的數量,可以是二維的,第二個參數為指定的函數,我們通過指定的函數計算結果并返回值插入到列表中,起始值為 0,實例如下: ``` object Test { def main(args: Array[String]) { // 通過給定的函數創建 5 個元素 val squares = List.tabulate(6)(n => n * n) println( "一維 : " + squares ) // 創建二維列表 val mul = List.tabulate( 4,5 )( _ * _ ) println( "多維 : " + mul ) } } ``` 執行以上代碼,輸出結果為: ``` $ vim Test.scala $ scala Test.scala 一維 : List(0, 1, 4, 9, 16, 25) 多維 : List(List(0, 0, 0, 0, 0), List(0, 1, 2, 3, 4), List(0, 2, 4, 6, 8), List(0, 3, 6, 9, 12)) ``` ## List.reverse List.reverse 用于將列表的順序反轉,實例如下: ``` object Test { def main(args: Array[String]) { val site = "Runoob" :: ("Google" :: ("Baidu" :: Nil)) println( "site 反轉前 : " + site ) println( "site 反轉前 : " + site.reverse ) } } ``` 執行以上代碼,輸出結果為: ``` $ vim Test.scala $ scala Test.scala site 反轉前 : List(Runoob, Google, Baidu) site 反轉前 : List(Baidu, Google, Runoob) ``` ## Scala List 常用方法 下表列出了 Scala List 常用的方法: | 方法 | 描述 | | --- | --- | | **def +(elem: A): List\[A\]** | 為列表預添加元素 | | **def ::(x: A): List\[A\]** | 在列表開頭添加元素 | | **def :::(prefix: List\[A\]): List\[A\]** | 在列表開頭添加指定列表的元素 | | **def ::(x: A): List\[A\]** | 在列表開頭添加元素 x | | **def addString(b: StringBuilder): StringBuilder** | 將列表的所有元素添加到 StringBuilder | | **def addString(b: StringBuilder, sep: String): StringBuilder** | 將列表的所有元素添加到 StringBuilder,并指定分隔符 | | **def apply(n: Int): A** | 通過列表索引獲取元素 | | **def contains(elem: Any): Boolean** | 檢測列表中是否包含指定的元素 | | **def copyToArray(xs: Array\[A\], start: Int, len: Int): Unit** | 將列表的元素復制到數組中。 | | **def distinct: List\[A\]** | 去除列表的重復元素,并返回新列表 | | **def drop(n: Int): List\[A\]** | 丟棄前n個元素,并返回新列表 | | **def dropRight(n: Int): List\[A\]** | 丟棄最后n個元素,并返回新列表 | | **def dropWhile(p: (A) =&gt; Boolean): List\[A\]** | 從左向右丟棄元素,直到條件p不成立 | | **def endsWith\[B\](that: Seq\[B\]): Boolean** | 檢測列表是否以指定序列結尾 | | **def equals(that: Any): Boolean** | 判斷是否相等 | | **def exists(p: (A) =&gt; Boolean): Boolean** | 判斷列表中指定條件的元素是否存在。判斷l是否存在某個元素:`scala&gt; l.exists(s =&gt; s == "Hah") res7: Boolean = true` | | **def filter(p: (A) =&gt; Boolean): List\[A\]** | 輸出符號指定條件的所有元素。過濾出長度為3的元素:`scala&gt; l.filter(s =&gt; s.length == 3) res8: List[String] = List(Hah, WOW)` | | **def forall(p: (A) =&gt; Boolean): Boolean** | 檢測所有元素。例如:判斷所有元素是否以"H"開頭:`scala&gt; l.forall(s =&gt; s.startsWith("H")) res10: Boolean = false` | | **def foreach(f: (A) =&gt; Unit): Unit** | 將函數應用到列表的所有元素 | | **def head: A** | 獲取列表的第一個元素 | | **def indexOf(elem: A, from: Int): Int** | 從指定位置 from 開始查找元素第一次出現的位置 | | **def init: List\[A\]** | 返回所有元素,除了最后一個 | | **def intersect(that: Seq\[A\]): List\[A\]** | 計算多個集合的交集 | | **def isEmpty: Boolean** | 檢測列表是否為空 | | **def iterator: Iterator\[A\]** | 創建一個新的迭代器來迭代元素 | | **def last: A** | 返回最后一個元素 | | **def lastIndexOf(elem: A, end: Int): Int** | 在指定的位置 end 開始查找元素最后出現的位置 | | **def length: Int** | 返回列表長度 | | **def map\[B\](f: (A) =&gt; B): List\[B\]** | 通過給定的方法將所有元素重新計算 | | **def max: A** | 查找最大元素 | | **def min: A** | 查找最小元素 | | **def mkString: String** | 列表所有元素作為字符串顯示 | | **def mkString(sep: String): String** | 使用分隔符將列表所有元素作為字符串顯示 | | **def reverse: List\[A\]** | 列表反轉 | | **def sorted[B &gt;: A]: List\[A\]** | 列表排序 | | **def startsWith\[B\](that: Seq\[B\], offset: Int): Boolean** | 檢測列表在指定位置是否包含指定序列 | | **def sum: A** | 計算集合元素之和 | | **def tail: List\[A\]** | 返回所有元素,除了第一個 | | **def take(n: Int): List\[A\]** | 提取列表的前n個元素 | | **def takeRight(n: Int): List\[A\]** | 提取列表的后n個元素 | | **def toArray: Array\[A\]** | 列表轉換為數組 | | **def toBuffer[B &gt;: A]: Buffer\[B\]** | 返回緩沖區,包含了列表的所有元素 | | **def toMap[T, U]: Map[T, U]** | List 轉換為 Map | | **def toSeq: Seq\[A\]** | List 轉換為 Seq | | **def toSet[B &gt;: A]: Set\[B\]** | List 轉換為 Set | | **def toString(): String** | 列表轉換為字符串 | 更多方法可以參考 [API文檔](http://www.scala-lang.org/api/current/scala/collection/immutable/List.html)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看