scala-session 3

1、 定长数组
如果需要一个长度不变的数组,可以用Scala中的Array。例如:
val nums = new ArrayInt或String #所有元素均被初始化0或者null
val s = Array(“Hello”,”World”) #当已提供初始值时,就不需要new了
s(0) = “Goodbye” #使用()而不是[]访问元素
2、 变长数组:数组缓冲
对于那种长度按需要变化的数组,Java有ArrayList,C++有vector。Scala中有效数据结构为ArrayBuffer
在这里插入图片描述

3、 遍历数组和数组缓冲
在这里插入图片描述

until方法跟to方法很像,只不过排除了最后一个元素。
0 until a.length by 2 // 每两个元素一跳
0 until a.length by -1 // 从数组的尾端开始遍历
如果在循环体中不需要用到数组下标,可以直接访问数组元素:
在这里插入图片描述

提示:还可以使用a.indices或a.indices.reverse代替0 until a.length或0 until a.length by -1
4、 数组转换
在这里插入图片描述

for/yield循环创建了一个类型与原始集合相同的新集合。如果从数组出发,那么得到的是另一个数组。如果从数组缓冲出发,在for/yield之后得到的也是一个数组缓冲。
通常,当你遍历一个集合时,只想处理那些满足特定条件的元素。可以通过守卫:for中的if来实现。
在这里插入图片描述

另一种做法如下:
a.filter(_ % 2 == 0).map(2 * _)
或者
a filter { _ % 2 == 0 } map { 2 * _ }
5、 常用算法
很大比例的业务运算不过是在求和与排序。
在这里插入图片描述
#默认从小到大
在这里插入图片描述
#从大到小
sorted方法将数组或数组缓冲排序并返回经过 排序的数组或数组缓冲,这个过程并不会修改原始版本。
可以直接对一个数组排序,但不能对数组缓冲排序:
在这里插入图片描述

可以使用mkString方法,允许指定元素之间的分隔符:

mkString(“ and “)
与toString相比,
在这里插入图片描述

a.toString这里被调用来自java的毫无意义的方法

toBuffer.toString()方法报告了类型,便于调试
6、 多维数组
和java一样,多维数组是通过数组的数组来实现的。构造一个数组,可以用ofDim方法:
在这里插入图片描述

7、 与Java的互操作
由于Scala数组使用Java数组实现的,因此可以在java和scala之间来回传递。
Java的String[]数组可以被传入一个预期Java的Object[]数组的方法。Scala并不允许这样的自动转换,因为这样转换不安全。
在这里插入图片描述

强制转换将Array[String]转换为Array[Object]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值