数组
不可变数组
可变数组
可变数组和不可变数组的转换
二维数组
列表
不可变 List
合并列表
可变列表
数组
不可变数组
val arr1 = new Array[Int](10)
- new 是关键字
- [Int]是指定可以存放的数据类型,如果希望存放任意数据类型,则指定 Any
- (10),表示数组的大小,确定后就不可以变化
不可变数组定义和访问
object test {def main(args: Array[String]): Unit = {//创建不可变数组val arr1 : Array[Int] = new Array[Int](10)//另一种创建方式val arry2 = Array(1,2,3,4,5,6,7,8,9)//访问数组中的元素println(arry2(1))//赋值arr1(0) = 10arr1(1) = 11}
}
不可变数组遍历
object test {def main(args: Array[String]): Unit = {//创建不可变数组val arry = Array(1,2,3,4,5,6,7,8,9,10)//数组遍历1普通循环for (i <- 0 until arry.length){println(arry(i))}//数组遍历2 使用indicesfor (i <- arry.indices) {println(arry(i))}//数组遍历3 直接遍历所有元素(增强for循环)for (i <- arry){println(i)}//数组遍历4 迭代器val iter = arry.iteratorwhile (iter.hasNext){println(iter.next())}//数组遍历5 foreach方法arry.foreach( (i : Int) => println(i))//致简原则 arry.foreach(println)//所有数据转换成String拼接到一起println(arry.mkString("_")) //括号内为连接符}
}
不可变数组添加元素
object test {def main(args: Array[String]): Unit = {//创建不可变数组val arry = Array(1,2,3,4,5,6,7,8,9,10)//向后添加元素val newArry1 =arry.:+(11) //使用 :加号放冒号后代表向后添加 ":+()"方法进行添加 并克隆新的添加对象后的数组println(newArry1.mkString(" "))//向前添加元素val newArry2 = arry.+:(0) //使用 :加号放冒号前代表向前添加 "+:()"方法进行添加 并克隆新的添加对象后的数组println(newArry2.mkString(" "))//简化添加方法val newArry3 = newArry1 :+ 15 //加号放冒号后代表向后添加val newArry4 = 20 +: newArry1 //添加数在前代表向前添加 //连续叠加val newArry5 = 10 +: 20 +: newArry1 :+ 50 :+ 60println(newArry5.mkString(" "))}
}
可变数组
val arr01 = ArrayBuffer[Any](3, 2, 5)
- [Any]存放任意数据类型
- (3, 2, 5)初始化好的三个元素
- ArrayBuffer 需要引入 scala.collection.mutable.ArrayBuffer
//创建可变数组val arry1 : ArrayBuffer[Int] = new ArrayBuffer[Int]()val arry2 = ArrayBuffer(21,22,23,24,25,26,27,28,29,30)//输出println(arry2.mkString(" "))println(arry2)//访问元素 对数组操作需要注意不要对数组越界println(arry2(0))
可变数组添加元素
//创建可变数组val arr = ArrayBuffer(1,2,3,4,5,6,7,8,9,10)val arr2 = new ArrayBuffer[Int]//添加元素// 末尾添加arr += 19 //可变数组中使用+=来给末尾添加元素println(arr)//向前添加22 +=: arrprintln(arr)//使用append方法添加arr.append(20)//向后添加arr.prepend(1)//向前添加arr.insert(1,10) //任意索引位置添加arr.insertAll(1,arr2)//任意索引位置追加数组arr.appendAll(arr2) //向前追加数组arr.prependAll(arr2)//向后追加数组println(arr)
可变数组删除元素
//创建可变数组val arr = ArrayBuffer(1,2,3,4,5,6,7,8,9,10)//删除元素arr.remove(1,2) //删除索引元素remove(索引,删除个数)arr -= 13 //"-="代表删除数组中的某一个元素println(arr)
可变数组和不可变数组的转换
arr1.toBuffer //不可变数组转可变数组
arr2.toArray //可变数组转不可变数组
- arr2.toArray 返回结果才是一个不可变数组,arr2 本身没有变化
- arr1.toBuffer 返回结果才是一个可变数组,arr1 本身没有变化
//转换为不可变数组val newArry = arr.toArrayprintln(newArry.mkString(" "))println(newArry)
二维数组
val arr = Array.ofDim[Double](3,4)
二维数组中有三个一维数组,每个一维数组中有四个元素
//创建二维数组val arry = Array.ofDim[Int](2,3) //创建2行3列的二维数组//访问元素arry(1)(0) = 19 //第2行第1个元素位置赋值19//遍历打印for (i <- 0 until arry.length; j <- 0 until arry(i).length){ //双重for循环遍历二维数组println(arry(i)(j))}//使用indices作为限制进行循环打印for (i <- arry.indices; j <- arry(i).indices){ //双重for循环遍历二维数组println(arry(i)(j) +"\t")if (j == arry(i).length -1){ //如果到了第一行数组最后一位元素 则换行(美观)println()}} //使用foreach遍历arry.foreach(i => i.foreach(println))
列表
不可变 List
- List 默认为不可变集合
- 创建一个 List(数据有顺序,可重复)
- 遍历 List (4)List 增加数据
- 集合间合并:将一个整体拆成一个一个的个体,称为扁平化
- 取指定数据
- 空集合 Nil
//创建不可变列表val lis = List(1,2,3,4,5,6,7,8,9,10) //不使用new来创建println(lis)//访问元素println(lis(0))//遍历lis.foreach(println)//添加元素val lis2 = lis.+:(10)//向前添加val lis3 = lis.:+(10)//向后添加val lis4 = lis.::(50)//添加到列表前面println(lis4)val lis5 = Nil.::(1)//定义空列表向前添加一个元素
合并列表
//创建不可变列表val lis1 = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)val lis2 = List(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1)//创建合并列表val lis3 = lis1 ::: lis2println(lis3)val list4 = lis1 ++ lis2
可变列表
ListBuffer
//创建可变列表val lis1 = new ListBuffer[Int]()val lis2 = ListBuffer(1,2,3,4,5,6,7,8,9)//添加元素lis2.append(10)lis2.prepend(0)lis2.insert(1,10)//连接列表val lis3 = lis2 ++ lis1//修改元素lis2(3) = 30 // lis2(索引位置) = 值lis2.update(0,20) //lis2.update(索引位置,值)//删除元素lis2.remove(2)//索引lis2 -= 25 //具体值