[原創]Scala學習:數組的基本操做,數組進階操做,多維數組

 

 

1.Scala中提供了一種數據結構-數組,其中存儲相同類型的元素的固定大小的連續集合。數組用於存儲數據的集合,但它每每是更加有用認爲數組做爲相同類型的變量的集合javascript

 

2 聲明數組變量:java

要使用的程序的數組,必須聲明一個變量來引用數組,必須指定數組變量能夠引用的類型。下面是語法聲明數組變量:es6

var z:Array[String] = new Array[String](3)     or      var z = new Array[String](3) or var z = Array("Zara", "Nuha", "Ayan")



在這裏,z被聲明爲字符串數組,最多可容納三個元素。能夠將值分配給獨立的元素或能夠訪問單個元素,這是能夠作到經過使用相似於如下命令:數組

 
z(0) = "Zara"; z(1) = "Nuha"; z(4/2) = "Ayan"


3.Scala中數組方法:
 

如下是重要的方法,能夠同時使用數組。如上所示,則必須使用任何說起的方法以前,要導入Array._包。有關可用方法的完整列表,請Scala中的官方文件。數據結構

 

 

SN 方法及描述
1 def apply( x: T, xs: T* ): Array[T]
建立T對象,其中T能夠是Unit, Double, Float, Long, Int, Char, Short, Byte, Boolean數組。
2 def concat[T]( xss: Array[T]* ): Array[T]
鏈接全部陣列成一個數組。
3 def copy( src: AnyRef, srcPos: Int, dest: AnyRef, destPos: Int, length: Int ): Unit
複製一個數組到另外一個。至關於Java的System.arraycopy(src, srcPos, dest, destPos, length).
4 def empty[T]: Array[T]
返回長度爲0的數組
5 def iterate[T]( start: T, len: Int )( f: (T) => T ): Array[T]
返回一個包含一個函數的重複應用到初始值的數組。
6 def fill[T]( n: Int )(elem: => T): Array[T]
返回包含某些元素的計算的結果的次數的數組。
7 def fill[T]( n1: Int, n2: Int )( elem: => T ): Array[Array[T]]
返回一個二維數組,其中包含某些元素的計算的結果的次數。
8 def iterate[T]( start: T, len: Int)( f: (T) => T ): Array[T]
返回一個包含一個函數的重複應用到初始值的數組。
9 def ofDim[T]( n1: Int ): Array[T]
建立數組給出的尺寸。
10 def ofDim[T]( n1: Int, n2: Int ): Array[Array[T]]
建立了一個2維數組
11 def ofDim[T]( n1: Int, n2: Int, n3: Int ): Array[Array[Array[T]]]
建立3維數組
12 def range( start: Int, end: Int, step: Int ): Array[Int]
返回包含一些整數間隔等間隔值的數組。
13 def range( start: Int, end: Int ): Array[Int]
返回包含的範圍內增長整數序列的數組。
14 def tabulate[T]( n: Int )(f: (Int)=> T): Array[T]
返回包含一個給定的函數的值超過從0開始的範圍內的整數值的數組。
15 def tabulate[T]( n1: Int, n2: Int )( f: (Int, Int ) => T): Array[Array[T]]
返回一個包含給定函數的值超過整數值從0開始範圍的二維數組。






  1 package first.scala  2 
 3 import scala.collection.mutable.ArrayBuffer  4 import sun.org.mozilla.javascript.internal.ast.Yield  5 
 6 object ScalaInAction {  7  //scala.Array
 8     
 9     /******************************************************************************************************************************/
 10     //定長數組  11     //聲明數組方式一:類型,大小
 12     val nums = new Array[Int](10)                 //> nums : Array[Int] = Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
 13     val a = new Array[String](10)                 //> a : Array[String] = Array(null, null, null, null, null, null, null, null, n  14                                                   //| ull, null)  15     //聲明方式二:能夠經過類型推斷,推斷出數組的類型
 16     val s = Array("hello" , "world")              //> s : Array[String] = Array(hello, world)
 17     
 18     s(0) = "goodbye"
 19     
 20     
 21     //可變數組
 22    val b = ArrayBuffer[Int]()                     //> b : scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer()
 23      
 24     b += 1                                        //> res0: first.scala.ScalaInAction.b.type = ArrayBuffer(1)
 25     b += (1,2,3,4)                                //> res1: first.scala.ScalaInAction.b.type = ArrayBuffer(1, 1, 2, 3, 4)
 26     b ++= Array(12,15,63)                         //> res2: first.scala.ScalaInAction.b.type = ArrayBuffer(1, 1, 2, 3, 4, 12, 15,  27                                                   //| 63)  28     //刪除最後的2個元素
 29     b.trimEnd(2)  30     b                                             //> res3: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 1, 2, 3, 4,  31                                                   //| 12)  32     //給定索引處插入 數據
 33     b.insert(2, 15)  34     b                                             //> res4: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 1, 15, 2, 3  35                                                   //| , 4, 12)  36     
 37    //刪除索引爲2的元素
 38     b.remove(2)                                   //> res5: Int = 15  39     
 40     //轉換爲數組,類型的變換
 41     b.toArray                                     //> res6: Array[Int] = Array(1, 1, 2, 3, 4, 12)
 42     b                                             //> res7: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 1, 2, 3, 4,  43                                                   //| 12)
 44                
 45     /*******************************************************************************************************/
 46     //數組的進階操做
 47     
 48     for(i <- 0 until a.length)  49         println(i + " : " + a(i))                 //> 0 : null  50                                                   //| 1 : null  51                                                   //| 2 : null  52                                                   //| 3 : null  53                                                   //| 4 : null  54                                                   //| 5 : null  55                                                   //| 6 : null  56                                                   //| 7 : null  57                                                   //| 8 : null  58                                                   //| 9 : null
 59     
 60     
 61     val c = Array(2,5,8,9,18)                     //> c : Array[Int] = Array(2, 5, 8, 9, 18)
 62          val  result = for(elem <- c) yield 2 * elem  63                                                   //> result : Array[Int] = Array(4, 10, 16, 18, 36)  64     
 65     //將c中的偶數乘2
 66     for(elem <- c if elem % 2 == 0 ) yield 2 * elem  67                                                   //> res8: Array[Int] = Array(4, 16, 36)  68           
 69     //spark中方式,和上面的效果同樣。先過濾後map
 70     c.filter( _ % 2 == 0).map(2 * _)              //> res9: Array[Int] = Array(4, 16, 36)  71     
 72     //求和
 73     Array(1,2,3).sum                              //> res10: Int = 6  74     
 75     
 76     //獲取最長的字符串
 77     ArrayBuffer("Mary", "had", "a", "little", "lamb").max  78                                                   //> res11: String = little  79     
 80     //排序,默認升序排序
 81     val d = ArrayBuffer(1,7,2,9)                  //> d : scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 7, 2, 9)
 82     val bSorted = d.sorted                        //> bSorted : scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 2, 7,  83                                                   //| 9)  84                                                   
 85     //快速排序
 86     val e = Array(1,7,2,9)                        //> e : Array[Int] = Array(1, 7, 2, 9)
 87  scala.util.Sorting.quickSort(e)  88     
 89     //定義元素鏈接方式
 90     e.mkString(" and ")                           //> res12: String = 1 and 2 and 7 and 9  91     //定義元素鏈接方式
 92     a.mkString("<", "," , ">")                    //> res13: String = <null,null,null,null,null,null,null,null,null,null>
 93     
 94     
 95   /**************************************************************************************************************************/
 96     
 97     
 98       //定義多維數組方法: Array.ofDim[Double](3,4)
 99     val matrix = Array.ofDim[Double](3,4)         //> matrix : Array[Array[Double]] = Array(Array(0.0, 0.0, 0.0, 0.0), Array(0.0 100                                                   //| , 0.0, 0.0, 0.0), Array(0.0, 0.0, 0.0, 0.0))
101     matrix(2)(1) = 42
102     
103     matrix                                        //> res14: Array[Array[Double]] = Array(Array(0.0, 0.0, 0.0, 0.0), Array(0.0, 0 104                                                   //| .0, 0.0, 0.0), Array(0.0, 42.0, 0.0, 0.0))
105         val triangle = new Array[Array[Int]](10) 106                                                   //> triangle : Array[Array[Int]] = Array(null, null, null, null, null, null, n 107                                                   //| ull, null, null, null)
108                                   
109                                   
110         for(i <- 0 until triangle.length) 111             triangle(i) = new Array[Int](i + 1) 112             triangle                  //> res15: Array[Array[Int]] = Array(Array(0), Array(0, 0), Array(0, 0, 0), Arr 113                                                   //| ay(0, 0, 0, 0), Array(0, 0, 0, 0, 0), Array(0, 0, 0, 0, 0, 0), Array(0, 0, 114                                                   //| 0, 0, 0, 0, 0), Array(0, 0, 0, 0, 0, 0, 0, 0), Array(0, 0, 0, 0, 0, 0, 0, 0 115                                                   //| , 0), Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0))
116     
117     
118                                             
119                                                  
120 }
相關文章
相關標籤/搜索