Array:数组
可修改的:ArrayBuffer
不可修改的:Array
需要导入包
Scala
import scala.collection.mutable.ArrayBuffer
可修改的: ArrayBuffer
Scala
def main(args: Array[String]): Unit = {
//1.新建
val arr1=ArrayBuffer(1,2,3)
//2.添加
arr1 += 4
arr1.insert(0,100)
//3.删除
arr1 -= 3 //删除指定的元素
arr1.remove(0) //删除指定位置(下标)的元素
//4.修改。通过下标来修改
arr1(0) = 50 //把下标为0的元素赋值为50
// 注意:下标不能越界。有效的范围是:0 - 长度 -1
println(arr1.length) //length 长度 ,用来获取元素的个数
println(arr1(10)) //IndexOutOfBoundsException
//5.查询
//5.1 判断某个元素在数组中是否存在
println(s"50在数组中吗? ${arr1.contains(50)}")
//5.2 找到指定元素的下标
// -1:表示这个元素在数组中不存在!
println(s"500在数组中的下标是: ${arr1.indexOf(500)}")
//6.遍历
// for,foreach,iterator
// for (i<-arr1) println(i)
// println("--------------")
// arr1.foreach(println)
// println("--------------")
val it1 = arr1.iterator
while (it1.hasNext)
println(it1.next())
}
不可修改的:Array: 长度
Scala
def main(args: Array[String]): Unit = {
val arr1=Array(1,2,3,4,5,6)
arr1(0)=100
// arr1.foreach(println)
//数组的常用的方法(对于可变和不可变的数组都可以使用)
//1. 截取。从原数组中,取一部分,组成一个新的数组
// arr1.slice(起点下标,终点下标-不包括)
val arr2=arr1.slice(2,5)
arr2.foreach(println)
//2.遍历.foreach
//3.映射 map
//Array(1,2,3)------>Array(2,4,6)
val arr3=Array(1,2,3).map(e=>e*2)
arr3.foreach(println)
//4.过滤 filter
println("-"*50)
//留下奇数,组成一个新的数组
val arr4=Array(2,3,4,5,6).filter(e=>e%2==1)
arr4.foreach(println)
//5.折叠 reduce
println(Array(1,2,3,4).reduce((a,b)=>a+b))
}
多维数组:
最典型的多维数组就是二维数组,类似于表格。有两种定义方法:
直接定义:Array.ofDim(x,y)
从一维数组转化得来:数组: grouped
Scala
//多维数组
val arr5=Array(Array(1,2,3),
Array(4,5,6),
Array(7,8,9))
//9
println(arr5(2)(2))
//4
println( arr5(1)(0) )
//创建二维数组
// val arr6=Array.ofDim[Int](3,3,3)
// arr6(0)(0)(0)=1
//由一维数组转化得到二维的数组
val arr6=Array(1,2,3,4,5,6).grouped(3)//对数组中的元素,3个一组,升级为二维数组
while (arr6.hasNext){
val rs=arr6.next()
println(rs(0))
}