1.定长数组
var array=new Array[T] (n)
val arr = new Array[Int](4) //底层 int[] arr = new int[4]
println(arr.length) // 4
println("arr(0)=" + arr(0)) // 0
//数据的遍历
for (i <- arr) {
println(i)
}
var arr = Array(1, 3, “xx”)
var arr = Array(1, 3, "xx")
arr(1) = "xx"
for (i <- arr) {
println(i)
}
//可以使用我们传统的方式遍历,使用下标的方式遍历
for (index <- 0 until arr.length) {
printf("arr02[%d]=%s", index, arr(index) + "\t")
}
2.变长数组
val arr = ArrayBuffer[T] (…)
val arr = ArrayBuffer[Any] (…)
object boke_demo01 {
def main(args: Array[String]): Unit = {
//创建ArrayBuffer
val arr = ArrayBuffer[Any](3, 2, 5)
//访问,查询
//通过下标访问元素
println("arr(1)=" + arr(1)) // arr(1) = 2
//遍历
for (i <- arr) {
println(i)
}
println(arr.length) //3
println("arr.hash=" + arr.hashCode())
//修改 [修改值,动态增加]
//使用append 追加数据 ,append支持可变参数
//可以理解成java的数组的扩容
arr.append(90.0, 13) // (3,2,5,90.0,13)
println("arr.hash=" + arr.hashCode())
println("===================")
arr(1) = 89 //修改 (3,89,5,90.0,13)
println("--------------------------")
for (i <- arr) {
println(i)
}
//删除...
//删除,是根据下标来说
arr.remove(0) // (89,5,90.0,13)
println("--------删除后的元素遍历---------------")
for (i <- arr) {
println(i)
}
println("最新的长度=" + arr.length) // 4
}
}
3.多维数组
val arr = Array.ofDim[T] (m,n)
object boke_demo01 {
def main(args: Array[String]): Unit = {
//创建
val arr = Array.ofDim[Int](3, 4)
//遍历
for (item <- arr) { //取出二维数组的各个元素(一维数组)
for (item2 <- item) { // 元素(一维数组) 遍历
print(item2 + "\t")
}
println()
}
//指定取出
println(arr(1)(1)) // 0
//修改值
arr(1)(1) = 9
//遍历
println("=====================")
for (item <- arr) { //取出二维数组的各个元素(一维数组)
for (item2 <- item) { // 元素(一维数组) 遍历
print(item2 + "\t")
}
println()
}
//使用传统的下标的方式来进行遍历
println("===================")
for (i <- 0 to arr.length - 1) { //先对
for (j <- 0 to arr(i).length - 1) {
printf("arr[%d][%d]=%d\t", i, j, arr(i)(j))
}
println()
}
}
}
3.数组转换
A.定长数组和不定长数组转换
arr1.toBuffer 定长数组转可变数组,arr2.toArray //可变数组转定长数组,arr1.toBuffer 返回结果是一个可变数组,arr1本身没有变化,arr2.toArray 返回结果是一个定长数组,arr2本身没有变化。
import scala.collection.mutable.ArrayBuffer
object boke_demo01 {
def main(args: Array[String]): Unit = {
val arr2 = ArrayBuffer[Int]()
// 追加值
arr2.append(1, 2, 3)
println(arr2)
//说明
//1. arr2.toArray 调用 arr2的方法 toArray
//2. 将 ArrayBuffer ---> Array
//3. arr2本身没有任何变化
val newArr = arr2.toArray
println(newArr)
//说明
//1. newArr.toBuffer 是把 Array->ArrayBuffer
//2. 底层的实现
/*
override def toBuffer[A1 >: A]: mutable.Buffer[A1] = {
val result = new mutable.ArrayBuffer[A1](size)
copyToBuffer(result)
result
}
*/
//3. newArr本身没变化
val newArr2 = newArr.toBuffer
newArr2.append(123)
println(newArr2)
}
}
B.Scala数组转Java的List
import scala.collection.mutable.ArrayBuffer
object boke_demo01 {
def main(args: Array[String]): Unit = {
// Scala集合和Java集合互相转换
val arr = ArrayBuffer("1", "2", "3")
/*
implicit def bufferAsJavaList[A](b : scala.collection.mutable.Buffer[A]) : java.util.List[A] = { /* compiled code */ }
*/
import scala.collection.JavaConversions.bufferAsJavaList
//对象 ProcessBuilder , 因为 这里使用到上面的 bufferAsJavaList
val javaArr = new ProcessBuilder(arr) //为什么可以这样使用?
// 这里arrList 就是java中的List
val arrList = javaArr.command()
println(arrList) //输出 [1, 2, 3]
}
}
C.Java的List转Scala数组
//java的List 转成 scala的 ArrayBuffer
//说明
//1. asScalaBuffer 是一个隐式函数
/*
implicit def asScalaBuffer[A](l : java.util.List[A]) : scala.collection.mutable.Buffer[A] = { /* compiled code */ }
*/
import scala.collection.JavaConversions.asScalaBuffer
import scala.collection.mutable
// java.util.List ==> Buffer
val scalaArr: mutable.Buffer[String] = arrList
scalaArr.append("jack")
scalaArr.append("tom")
scalaArr.remove(0)
println(scalaArr) // (2,3,jack,tom)
————Blueicex 2020/2/15 18:06 blueice1980@126.com