1、数组的定义
1.1定义定长数组
scala> val arr = Array(1,2,3,4,5,6) arr: Array[Int] = Array(1, 2, 3, 4, 5, 6) scala> val arr1 = new Array[Int](10) arr1: Array[Int] = Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0) scala> println(arr1) [I@332f25c8 scala> println(arr1.toBuffer) ArrayBuffer(0, 0, 0, 0, 0, 0, 0, 0, 0, 0) scala> println(arr.toBuffer) ArrayBuffer(1, 2, 3, 4, 5, 6) scala> println(arr) [I@2650f79
1.2.定义不定长数组
scala> import scala.collection.mutable.ArrayBuffer import scala.collection.mutable.ArrayBuffer scala> val arr2 = ArrayBuffer[Int]() arr2: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer() scala> arr2 += 1 res6: arr2.type = ArrayBuffer(1) scala> arr2 += (2,3,4) res7: arr2.type = ArrayBuffer(1, 2, 3, 4) scala> val arr = Array(7,8,9) arr: Array[Int] = Array(7, 8, 9) scala> arr2 ++= arr res8: arr2.type = ArrayBuffer(1, 2, 3, 4, 7, 8, 9) scala> arr2 ++= ArrayBuffer(11,12) res9: arr2.type = ArrayBuffer(1, 2, 3, 4, 7, 8, 9, 11, 12)
关键的操作:+=、++=
++=是数组对数组的增值操作
+=是对单个数据的操作
append追加:
scala> arr2.append(21,22)
insert追加(0:下标,1,0是代表的要插入的数据)
scala>arr2.insert(0,1,0)
对数据的删除:-=
scala> arr2 -= 1 res15: arr2.type = ArrayBuffer(0, 1, 2, 3, 4, 7, 8, 9, 11, 12, 21, 22)
remove:第一个参数是指下标,第二个参数是下标往后的几个数据
scala> arr2.remove(2,2) scala> arr2 res17: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(0, 1, 4, 7, 8, 9, 11, 12, 21, 22)
数组的转换
scala> val res = for(i <- 0 to arr2.length-1;if(i%2==0)) yield 1*10 res: scala.collection.immutable.IndexedSeq[Int] = Vector(10, 10, 10, 10, 10) scala> val res = for(i <- 0 to arr2.length-1;if(i%2==0)) yield i*10 res: scala.collection.immutable.IndexedSeq[Int] = Vector(0, 20, 40, 60, 80) scala> val res = arr2.filter(_%2 ==0) res: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(0, 4, 8, 12, 22) scala> val res = arr2.filter(_%2 ==0).map(_*10) res: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(0, 40, 80, 120, 220)
数组的常用的一下算法
scala> arr2.sum res18: Int = 95 scala> println(res18) 95 scala> arr2.max res20: Int = 22 scala> arr2.min res21: Int = 0 scala> arr2.sorted res22: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(0, 1, 4, 7, 8, 9, 11, 12, 21, 22) scala> arr2.reverse res23: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(22, 21, 12, 11, 9, 8, 7, 4, 1, 0) scala> arr2.sortWith(_<_) res24: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(0, 1, 4, 7, 8, 9, 11, 12, 21, 22) scala> arr2.sortWith(_>_) res25: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(22, 21, 12, 11, 9, 8, 7, 4, 1, 0)
2、元组的定义
重要点:
scala> val tuple = ("hadoop",3.1415,45,'char') <console>:1: error: unclosed character literal val tuple = ("hadoop",3.1415,45,'char') ^ scala> val tuple = ("hadoop",3.1415,45,"char") tuple: (String, Double, Int, String) = (hadoop,3.1415,45,char) scala> tuple._1 res26: String = hadoop scala> tuple._4 res27: String = char scala> val t,(x,y,z) = ("scala",12,3.14) t: (String, Int, Double) = (scala,12,3.14) x: String = scala y: Int = 12 z: Double = 3.14 scala> x res28: String = scala scala> y res29: Int = 12 scala> x res30: String = scala scala> z res31: Double = 3.14
拉链操作
scala> val arr1 = Array("x","y","z") arr1: Array[String] = Array(x, y, z) scala> val arr2 = Array(1,2,3) arr2: Array[Int] = Array(1, 2, 3) scala> arr1.zip(arr2) res32: Array[(String, Int)] = Array((x,1), (y,2), (z,3)) scala> arr1 zip arr2 res33: Array[(String, Int)] = Array((x,1), (y,2), (z,3)) scala> val arr3 = Array(1,2,3,4,5) arr3: Array[Int] = Array(1, 2, 3, 4, 5) scala> arr1 zip arr3 res34: Array[(String, Int)] = Array((x,1), (y,2), (z,3))