日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Scala数组的基本操作,数组进阶操作,多维数组

發(fā)布時(shí)間:2024/1/23 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Scala数组的基本操作,数组进阶操作,多维数组 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.Scala中提供了一種數(shù)據(jù)結(jié)構(gòu)-數(shù)組,其中存儲相同類型的元素的固定大小的連續(xù)集合。數(shù)組用于存儲數(shù)據(jù)的集合,但它往往是更加有用認(rèn)為數(shù)組作為相同類型的變量的集合

2?聲明數(shù)組變量:

要使用的程序的數(shù)組,必須聲明一個(gè)變量來引用數(shù)組,必須指定數(shù)組變量可以引用的類型。下面是語法聲明數(shù)組變量:

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

在這里,z被聲明為字符串?dāng)?shù)組,最多可容納三個(gè)元素。可以將值分配給獨(dú)立的元素或可以訪問單個(gè)元素,這是可以做到通過使用類似于以下命令:

z(0) = "Zara"; z(1) = "Nuha"; z(4/2) = "Ayan" 3.Scala中數(shù)組方法:

以下是重要的方法,可以同時(shí)使用數(shù)組。如上所示,則必須使用任何提及的方法之前,要導(dǎo)入Array._包。有關(guān)可用方法的完整列表,請Scala中的官方文件。


SN方法及描述
1def apply( x: T, xs: T* ): Array[T]
創(chuàng)建T對象,其中T可以是Unit, Double, Float, Long, Int, Char, Short, Byte, Boolean數(shù)組。
2def concat[T]( xss: Array[T]* ): Array[T]
連接所有陣列成一個(gè)數(shù)組。
3def copy( src: AnyRef, srcPos: Int, dest: AnyRef, destPos: Int, length: Int ): Unit
復(fù)制一個(gè)數(shù)組到另一個(gè)。相當(dāng)于Java的System.arraycopy(src, srcPos, dest, destPos, length).
4def empty[T]: Array[T]
返回長度為0的數(shù)組
5def iterate[T]( start: T, len: Int )( f: (T) => T ): Array[T]
返回一個(gè)包含一個(gè)函數(shù)的重復(fù)應(yīng)用到初始值的數(shù)組。
6def fill[T]( n: Int )(elem: => T): Array[T]
返回包含某些元素的計(jì)算的結(jié)果的次數(shù)的數(shù)組。
7def fill[T]( n1: Int, n2: Int )( elem: => T ): Array[Array[T]]
返回一個(gè)二維數(shù)組,其中包含某些元素的計(jì)算的結(jié)果的次數(shù)。
8def iterate[T]( start: T, len: Int)( f: (T) => T ): Array[T]
返回一個(gè)包含一個(gè)函數(shù)的重復(fù)應(yīng)用到初始值的數(shù)組。
9def ofDim[T]( n1: Int ): Array[T]
創(chuàng)建數(shù)組給出的尺寸。
10def ofDim[T]( n1: Int, n2: Int ): Array[Array[T]]
創(chuàng)建了一個(gè)2維數(shù)組
11def ofDim[T]( n1: Int, n2: Int, n3: Int ): Array[Array[Array[T]]]
創(chuàng)建3維數(shù)組
12def range( start: Int, end: Int, step: Int ): Array[Int]
返回包含一些整數(shù)間隔等間隔值的數(shù)組。
13def range( start: Int, end: Int ): Array[Int]
返回包含的范圍內(nèi)增加整數(shù)序列的數(shù)組。
14def tabulate[T]( n: Int )(f: (Int)=> T): Array[T]
返回包含一個(gè)給定的函數(shù)的值超過從0開始的范圍內(nèi)的整數(shù)值的數(shù)組。
15def tabulate[T]( n1: Int, n2: Int )( f: (Int, Int ) => T): Array[Array[T]]
返回一個(gè)包含給定函數(shù)的值超過整數(shù)值從0開始范圍的二維數(shù)組。
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 //定長數(shù)組 11 //聲明數(shù)組方式一:類型,大小 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 //聲明方式二:可以通過類型推斷,推斷出數(shù)組的類型 16 val s = Array("hello" , "world") //> s : Array[String] = Array(hello, world) 17 18 s(0) = "goodbye" 19 20 21 //可變數(shù)組 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個(gè)元素 29 b.trimEnd(2) 30 b //> res3: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 1, 2, 3, 4, 31 //| 12) 32 //給定索引處插入 數(shù)據(jù) 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 //轉(zhuǎn)換為數(shù)組,類型的變換 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 //數(shù)組的進(jìn)階操作 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中的偶數(shù)乘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 //排序,默認(rèn)升序排序 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 //定義多維數(shù)組方法: 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 }

總結(jié)

以上是生活随笔為你收集整理的Scala数组的基本操作,数组进阶操作,多维数组的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。