scala集合之Array与List

Scala中的集合包括Seq序列、Set组、Map映射,Seq包含了有索引的数组(Array、ArrayBuffer)和无索引的列表(List、ListBuffer)。
不可变集合指的是集合对象的存放地址、集合大小与类型、占用内存空间不可修改,只可以修改元素。若增删元素,则每次增删后会产生新对象,原有对象不会改变
可变集合指的是集合对象的存放地址、集合大小与类型、占用内存空间都可以修改,每次修改后不会产生新对象。对可变集合的操作尽量不要重新赋予新变量,因为新变量改变后,原变量也会随之改变。
可变集合包:scala.collection.mutable
不可变集合包:scala.collection.mutable

一、数组

数组就是常见的下标与元素一一对应的集合,即有索引的Seq。数组也分为可变与不可变,都用new关键字创建
new Array/ArrayBuffer[type](length)不可变数组是Array,可变数组是ArrayBuffer,可变数组的长度可以不定义

1、不可变数组

创建长度为5的整数型数组,并访问、修改元素

object Main {
   
  def main(args:Array[String])=
  {
   
	//空数组
	val arr1 = new Array[Int](5)
	//值数组
	val arr2 = Array(1,2,4,3,6)
	//访问数组第一个元素
	println(arr2(0))
	//修改并访问数组第2个元素
	arr2(1) = 8
	println(arr2(1))
  }		
}

遍历数组所有元素

object Main {
   
  def main(args:Array[String])=
  {
   	//直接遍历
	for (i <- arr2) println(i)
	
	//调用foreach方法
	arr2.foreach(println)

	//角标遍历
	for (j <- 0 until arr2.length) println(arr2(j))

	for (m <- arr2.indices) println(arr2(m)) //indices相当于数组所有角标组成的序列

	//迭代器,存在下一个则输出
	val iter = arr2.iterator
	  while (iter.hasNext)
		println(iter.next())
	  
	//输出所有元素组成的字符串
	println(arr2.mkString(" "))
  }		
}

增加元素产生新对象
调用方法:最后边新增:+、最前边新增+:

object Main {
   
  def main(args:Array[String])=
  {
   
    val arr2 = Array(1,2,4,3,6)
	//在最前面加元素
	val newarr = arr2.+:(8)
	val newarr1 = arr2.+:(8).+:(9)
	val newarr6 = 1 +: arr2 //方法调用的圆点可以省略,等同于数组、方法、新增元素用空格隔开。方法以:结尾时,右边往前调用的,也就是数组要在方法右侧,新增元素在方法左侧
	println(newarr.mkString("-"))
	println(newarr1.mkString("-"))
	println(newarr6.mkString("-"))
	
	//在最后边加元素
	val newarr2 = arr2.:+(7)
	val newarr3 = arr2.:+(0).:+(6)
	val newarr7 = arr2 :+ 2 //方法调用的圆点可以省略,等同于数组、方法、新增元素用空格隔开
	println(newarr2.mkString("-"))
	println(newarr3.mkString("-"))
	println(newarr7.mkString("-"))
	
	//同时在前后加元素
	val newarr4 = arr2.:+(1).:+(2).+:(3).+:(4)
	val newarr5 = 1 +: 2 +: arr2 :+ 3 :+ 4
	println(newarr4.mkString("-"))
	println(newarr5.mkString("-"))
  }		
}
2、可变数组

创建数组,访问、修改元素同不可变数组

object Main extends App {
   
    import scala.collection.mutable._
    //创建空数组
    val arr:ArrayBuffer[Int] = new ArrayBuffer[Int]()
    //创建值数组
	val newarr = ArrayBuffer(1,2,3)
	println(ar
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值