定长数组
定义数组
方式一
// 1.定义一个数组,10为数组大小
// 2.[Int]为数组类型
// 3.[Any]表示该数组可以存放任意类型
// 4.数组的访问时()而不是[]
val array = Array[Int](10)
array(1)
方式二
// 定义数组时,直接赋值
// 因为该数组给了整数和字符串,所以这个数组的泛型是Any
val array2 = Array(1,2,3, "xuwei")
变长数组
定义变长数组
类似于java的ArrayList,每append一次,底层会重新分配空间,进行扩容,内存地址会发生变化,也就会成为新的ArrayBuffer
// 1.定义一个变长数组
// 2.因为是变长数组,可以不指定length
val array = ArrayBuffer[Int]()
// 添加元素
array.append(1)
// 重新赋值
array(0) = 2
// 删除元素
array.remove(0)
定长数组和变长数组的转换
- arr2.toArray 可变数组转定长数组,返回结果是一个定长数组,arr2本身没有发生变化
- arr.toBuffer 定长数组转变长数组,返回结果是一个变长数组,arr本身没有发生变化
// 定义一个类型为Any的ArrayBuffer
val arr = ArrayBuffer[Any]()
// 添加元素
arr.append(1, 2, "xuwei")
arr.foreach(println)
// ArrayBuffer转为Array
val arr2 = arr.toArray
arr2.foreach(println)
// Array转变为ArrayBuffer
val buffer = arr2.toBuffer
scala的ArrayBuffer转java的List
// scala集合和java集合相互转换
val arr = ArrayBuffer[String]("a","b","c")
import scala.collection.JavaConversions.bufferAsJavaList
// 对象processBuilder,因为这里使用到上面的bufferAsJavaList
val builder = new ProcessBuilder(arr)
// javaArr就是java中的ArrayList
val javaArr = builder.command()
java的list转scala的ArrayBuffer
// java的集合转scala的ArrayBuffer
val scalaArr : mutable.Buffer[String] = javaArr
scalaArr.append("e")
网友评论