Scala—集合(超级无敌详细!)

集合

集合简介
1. Scala的集合有三大类:序列Seq、集set、映射Map,所有的集合都扩展自Iterable特质。

  1. 对于几乎所有的集合类,Scala都同时提供了可变和不可变的版本,分别位于下面两个包{不可变集合:scala.collection.immutable  

可变集合:scala.collection.mutable}。

  1. Scala不可变集合,就是指该集合对象不可修改,每次修改就会返回一个新对象,而不会对原对象进行修改。类似于Java中的String对向。
  2. 可变集合,就是这个对象可以对原对向进行修改,而不会返回新的对象。类似于Java中的StringBuilder对象。

建议:在操作集合的时候,不可变用符号,可变用方法

不可变数组

第一种定义数组方式

val arr1=new Array[Int](10)

arr1是数组名称,new是关键字。[Int]是指定可以存放的数据类型,如果希望存放任意数据类型,则指定Any。(10),表示数组的大小,确定后不可变。

另一种创建方式

val arr2=Array(12,13,14,15,16)

创建数组的时候将所有的数据添加进去,这样会简便高效

给元素赋值

创建数组,但未给赋值时,Int类型默认为0

arr1(0) = 12

访问元素

println( arr1 (0) )

普通for循环

for (i<- 0 until arr2.length){         //to方法没办法遍历到length-1位
      print(arr2(i)+",")

用Scala自带方法的for循环

for (i<- arr2.indices) {  

print(arr2(i)+",")

增强for循环,直接遍历所有元素

for (i <- arr2)  println(i)

迭代器

val iter = arr2.iterator
  hile (iter.hasNext)
      println(iter.next())

调用foreach()方法

arr2.foreach( (i:Int) => println(i) )

将数组中所有元素连接起来,变为字符串打印出来

println ( arr2.mkString ("") )        //元素之间用什么连接,就将中间的放在引号里面

添加元素

因为数组不可变,所以添加元素的是返回出来的新数组

val arr3 = arr2 . : + (75)           //旧数组后加小数点,冒号和加号

(加号在冒号后面,表示添加元素在数组最后,加号在冒号前面,表示添加元素在数组前面)

val arr4 = arr2.+:(56)

Scala中另一种写法

val arr5 = arr2 :+ 78               //加数组后面

val arr5 = 19 +: 29 +: arr2 :+ 78     //前面加两个,后面加一个,冒号和加号记得换位

可变数组

创建可变数组,两种方法

val arr1: ArrayBuffer[Int] = new ArrayBuffer[Int]()     //创建单一个数组

val arr2 = ArrayBuffer(23,57,93)                       //简便

访问元素

println(arr2(2))               //与不可变一样

遍历等操作与上述一样

添加元素

可变数组一般不用:+的操作,因为这个操作需要创建新的对象

arr2 += 12           //在集合后面加

77 +=:arr2          //在集合前面加

(一般不要用可变数组为基础创建一个新集合,这样创建出来的集合在一个地址,在新集合或者旧集合添加元素时,两个集合都会出现新元素)

用方法在集合加元素

arr2.append(36)

arr2.prepend(11,76)

删除元素

arr2.remove(3)              //3是位置

arr2.remove(3,10)          //是从3位置删到10位置

arr2 -= 13                 //删除13这个数,有删,没有什么都不做

数组转换

可变数组转换为不可变数组

val arr:ArrayBuffer[Int] = ArrayBuffer(23,56,98)

val newArr: Array[int]= arr.toArray    //调用toArrag方法

不可变数组转换为可变数组

val buffer:mutable.BUffer[Int] = newArr . toBuffer    //调用toBuffer方法

创建二维数组

val array:Array[Array[Int]] = Array.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值