数组:一个用来装同种类型元素的框
一、定长数组
package com.soul.bigdata.scala.day04
object ArrayApp {
def main(args: Array[String]): Unit = {
// val a = new Array[String](5)
// a(1) = "Spark"
// a.foreach(print)
//没有new的原因是apply方法 底层自动给我们new了 并把我们传的值赋值进去了
val b = Array("Spark", "Hive", "Hadoop")
// b.foreach(print)
println(b.mkString) //SparkHiveHadoop
println(b.mkString("\t"))//Spark Hive Hadoop
println(b.mkString("<","&&",">"))//<Spark&&Hive&&Hadoop>
// val n = Array(1 to 10)
val n = Array(1,2,3,4,5,6)
println(n.sum)
println(n.count(_>4))
}
}
二、变长数组
scala> import scala.collection.mutable.ArrayBuffer
import scala.collection.mutable.ArrayBuffer
定义一个Int类型、长度为0变长数组
scala> val a = ArrayBuffer[Int]()
a: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer()
scala> a.length
res5: Int = 0
------------------------------------------------
添加元素
scala> a += 1
res6: a.type = ArrayBuffer(1)
scala> a+=(2,3,4)
res21: a.type = ArrayBuffer(1, 2, 3, 4)
scala> a += (1,2,3,4,5)
res9: a.type = ArrayBuffer(1, 1, 2, 3, 4, 5)
scala> a++=Array(6,7,8)
res22: a.type = ArrayBuffer(1, 2, 3, 4, 6, 7, 8)
#从下标为0的位置开始插入一个0 和 10
scala> a.insert(0,0,10)
scala> a
res29: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(0, 10, 1, 2, 3, 4, 6, 7, 8)
------------------------------------------------
删除元素
#删除1
scala> a-=1
res30: a.type = ArrayBuffer(0, 10, 2, 3, 4, 6, 7, 8)
#删除0
scala> a.remove(0)
res31: Int = 0
scala> a
res32: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(10, 2, 3, 4, 6, 7, 8)
#从下标0开始删除两个元素
scala> a.remove(0,2)
scala> a
res34: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(3, 4, 6, 7, 8)
#从末尾开始删除两个元素
scala> a.trimEnd(2)
scala> a
res36: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(3, 4, 6)
-------------------------------------------------------------
变长变定长数组
scala> val b = a.toArray
b: Array[Int] = Array(3, 4, 6)
#结合高级函数使用
scala> b.map(_*2).filter(_ >= 8)
res39: Array[Int] = Array(8, 12)
网友评论