Array
创建空数组
val a = new Array[Int](10)val a = new Array[String](10)val a = Array("hello", "world") a(0) = "hi"
ArrayBuffer
在Scala中,如果需要类似于Java中的ArrayList这种长度可变的集合类,则可以使用ArrayBuffer。
scala> import scala.collection.mutable.ArrayBufferimport scala.collection.mutable.ArrayBufferscala> val b = ArrayBuffer[Int]() b: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer() scala> b += 1res24: b.type = ArrayBuffer(1) scala> b +=(2,3,4,5) res26: b.type = ArrayBuffer(1, 2, 3, 4, 5) scala> b ++= Array(6,7,8,9,10) res28: b.type = ArrayBuffer(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) scala> b.trimEnd(5) // 使用trimEnd()函数,可以从尾部截断指定个数的元素scala> b res30: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 2, 3, 4, 5)
也可以使用insert()函数可以在指定位置插入元素
scala> b.insert(5, 6) // 第一个参数时位置scala> b.insert(6, 7, 8, 9, 10) scala> scala>
使用remove()函数可以移除指定位置的元素
scala> b.remove(1) scala> b.remove(1, 3)
Array与ArrayBuffer可以互相进行转换
scala> b.toArray scala> a.toBuffer
便利Array和ArrayBuffer
scala> for(i <- 0 until b.length) println(b(i))133678910scala> for(i <- 0 until (b.length,2)) println(b(i)) // 间隔为21379scala> for(i <- (0 until b.length).reverse) println(b(i)) // 倒序109876331scala> for(e <- b) println(e) // 增强for循环133678910scala>
数据常见操作
求和
最大值
排序
获取所有元素内容
使用yield和函数式编程转换数据
对Array进行转换,获取的还是Array
scala> val a = Array(1,2,3,4,5) a: Array[Int] = Array(1, 2, 3, 4, 5) scala> val a2 = for(ele <- a) yield ele * ele a2: Array[Int] = Array(1, 4, 9, 16, 25)
对ArrayBuffer进行转换,获取的还是ArrayBuffer
scala> val b = ArrayBuffer[Int]() b: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer() scala> b += (1,2,3,4,5) res55: b.type = ArrayBuffer(1, 2, 3, 4, 5) scala> val b2 = for(ele <- b) yield ele * ele b2: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 4, 9, 16, 25)
结合if守卫,仅转换需要的元素
scala> val a3 = for(ele <- a if ele % 2 == 0) yield ele * ele a3: Array[Int] = Array(4, 16)
使用函数式编程转换数组
scala> a.filter(_ % 2 == 0).map(_ * 2) res57: Array[Int] = Array(4, 8)