数组:存放一系列元素的容器
1.scala中数组可以分为两类:
不可变数组、定长数组:Array
可变数组、缓冲数组、数组缓存:ArrayBuffer(集合,Seq)
ArrayBuffer位于scala.collection.mutable包下。
2.Array数组
2.1定义:
1.通过类构建: val arr = new Array[T](size)
2.通过对象构建(统一对象构建原则): val arr2 = Array("hello","scala","java");
val arr3 = Array.apple(1,2,3,4)
val set=Set(1,2,34,5)
2.2取值
arr(index)
本质上调用的arr.apply(index)这个方法
arr.take(num)
arr.takeRight(num)
arr.takeWhile(pf:T=>Boolean)
2.3赋值
arr(index)=值
arr.update(index,值)
2.4 遍历数组
for(elem <- arr){...}
for(index <- 0 until arr.length){...}
arr.foreach(println)
2.5 获取数组的长度
arr.length
arr.size
3.ArrayBuffer数组缓冲
2.1定义方式
1.通过类构建
eg:
import scala.collection.mutable.ArrayBuffer
val arrBuffer=new ArrayBuffer[T]();
2.通过对象构建(统一对象构建原则)
eg:
val aeeBuffer=AeeayBuffer(1,2,3)
2.2添加元素
+: ++ ++: +=: ++=: append appendAll insert insertAll
需要注意的是:
1. 当方法名中有一个+号时,指的是添加 一个元素,返回一个新的集合/数组
2. 当方法名中有两个+号时,指的是添加 一个集合/数组容器,返回一个新的集合/数组
3. 当方法名中出现=号时,指的是会修改原集合。(只有可变集合才有包含=的方法)
4. 当方法名中没有=号时,不会修改原集合/数组,一般只会返回一个新的集合/数组
2.3移除元素
- -- -= --= remove(index) remove(index,count) drop(count) dropRight(count) dropWhile(pf:T=>Boolean)
2.4常见方法
take takeRight takeWhile count
算数集合:sum product max min
排序:
sorted 按照集合类型默认排序规则进行排序(默认升序)
sortBy 按照自定义指定规则进行排序
sortWith自定义升序还是降序排列
遍历输出:foreach
转换:map filter
val result=for(elem <- arr if elem %2==0)yield elem*2
val newArr=arr.filter(_%2==0).map(_*2)
val newArr=
arr.filter(
(x:Int) => {x%2==0}
).map(
(x:Int) => { x*2 }
)
4.多维数组: 数组的数组
val arr2=new Array[Array[Int]](size);
arr2(0)=Array(1,2,4)
arr2(1)=Array(2,4,6,8)
val arr3=Array.ofDim[Double](3,2,5,4)