Day3
数组:
存放一系列元素的容器
1.分类:
不可变数组 定长数组 Array
可变数组 缓冲数组 数组缓存 ArrayBuffer (集合,Seq)
ArrayBuffer位于scala.collection.mutable包下。
2.Array数组:
2.1定义方式:
1.通过类构建
eg:
val arr=new Array[T](size);
2.通过对象构建(统一对象构建原则)
eg:
val arr2=Array("hello","scala","java");
val arr3=Array.apply(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)