scala 學習筆記一 列表List


 1、介紹

    Scala 列表類似於數組,它們所有元素的類型都相同,但是它們也有所不同:列表是不可變的,值一旦被定義了就不能改變,其次列表 具有遞歸的結構(也就是鏈接表結構)而數組不是。。

    列表的元素類型 T 可以寫成 List[T]。例如,以下列出了多種類型的列表:

    

    構造列表的兩個基本單位是 Nil 和 ::

    Nil 也可以表示為一個空列表。

    以上實例我們可以寫成如下所示:

    

  

  2、列表基本操作

    Scala列表有三個基本操作:

    1、head 返回列表第一個元素

    2、tail 返回一個列表,包含除了第一元素之外的其他元素

    3、isEmpty 在列表為空時返回true

    對於Scala列表的任何操作都可以使用這三個基本操作來表達。實例如下:

 

  連接列表

    

    

    

    ++: 與++不同的是使用的右邊邊的數據類型

    

 

 

  List.fill()

    我們可以使用 List.fill() 方法來創建一個指定重復數量的元素列表:

    

  

  List.tabulate()

    List.tabulate() 方法是通過給定的函數來創建列表。

    方法的第一個參數為元素的數量,可以是二維的,第二個參數為指定的函數,我們通過指定的函數計算結果並返回值插入到列表中,起始值為 0,實例如下

    

    

  List.reverse

    List.reverse 用於將列表的順序反轉,實例如下:

    

   

  Scala List 常用方法

    1、為列表預添加元素

      +:  在List的頭部增加元素

      :+  在后面追加元素

    

    

   2、def addString(b: StringBuilder): StringBuilder

    將列表的所有元素添加到 StringBuilder

    

   3、def addString(b: StringBuilder, sep: String): StringBuilder

    將列表的所有元素添加到 StringBuilder,並指定分隔符

    

   4、通過列表索引獲取元素

      def apply(n: Int): A

    

   5、檢測列表中是否包含指定的元素

      def contains(elem: Any): Boolean

    

   6、將列表的元素復制到數組中

    def copyToArray(xs: Array[A], start: Int, len: Int): Unit

    

   7、去除列表的重復元素,並返回新列表

     def distinct: List[A]

    

   8、丟棄前n個元素,並返回新列表

    def drop(n: Int): List[A]

    

   9、丟棄最后n個元素,並返回新列表

    def dropRight(n: Int): List[A]

    

   10、從左向右丟棄元素,直到條件p不成立

    def dropWhile(p: (A) => Boolean): List[A]

    

   11、檢測列表是否以指定序列結尾

    def endsWith[B](that: Seq[B]): Boolean

    

   12、判斷是否相等

    def equals(that: Any): Boolean

    

   13、判斷列表中指定條件的元素是否存在

    判斷l是否存在某個元素:

    

   14、輸出符號指定條件的所有元素。

    過濾出長度為3的元素:

    

   15、檢測所有元素

    例如:判斷所有元素是否以"a"開頭:

    

   16、將函數應用到列表的所有元素

    def foreach(f: (A) => Unit): Unit

    

   17、獲取列表的第一個元素,獲取列表的最后一個原始

    def head: A

    def last: A

    

    

 

   18、從指定位置 from 開始查找元素第一次出現的位置

    def indexOf(elem: A, from: Int): Int

    

   19、返回所有元素,除了最后一個,返回所有元素,除了第一個

    def init: List[A]

    def tail: List[A]

    

   20、計算多個集合的交集

    def intersect(that: Seq[A]): List[A]

    

   21、檢測列表是否為空

    def isEmpty: Boolean

    

   22、創建一個新的迭代器來迭代元素

    def iterator: Iterator[A]

    

   23、在指定的位置 end 開始查找元素最后出現的位置

    def lastIndexOf(elem: A, end: Int): Int

    

   24、返回列表長度

    def length: Int

    

   25、通過給定的方法將所有元素重新計算

     def map[B](f: (A) => B): List[B]

    

   26、查找最大元素,查找最小元素

    def max: A,def min: A

    

   27、列表所有元素作為字符串顯示

    def mkString: String

    

 

   28、使用分隔符將列表所有元素作為字符串顯示

    def mkString(sep: String): String

     

   29、列表反轉

    def reverse: List[A]

    

   30、列表排序

    def sorted[B >: A]: List[A]

    

   31、檢測列表在指定位置是否包含指定序列

    def startsWith[B](that: Seq[B], offset: Int): Boolean

    

   32、計算集合元素之和

    def sum: A

    

   33、提取列表的前n個元素

    def take(n: Int): List[A]

    

   34、提取列表的后n個元素

    def takeRight(n: Int): List[A]

    

   35、列表轉換為數組

    def toArray: Array[A]

    

   36、返回緩沖區,包含了列表的所有元素

    def toBuffer[B >: A]: Buffer[B]

    

   37、List 轉換為 Map

    def toMap[T, U]: Map[T, U]

    

   38、List 轉換為 Seq

    def toSeq: Seq[A]

    

   39、List 轉換為 Set

    def toSet[B >: A]: Set[B]

    

   41、列表轉換為字符串

    def toString(): String

 

    

  參考:http://www.runoob.com/scala/scala-lists.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM