Scala学习第十三弹 数组遍历和数组转换

来源:互联网 发布:饥荒海难数据修改 编辑:程序博客网 时间:2024/06/06 16:48

数组遍历
可以利用for循环来遍历数组或者数组缓冲
for(i <- o to until a.length)//变量i的取值范围是0到a.length -1
until是RichInt类的方法,返回所有小于(但不包括)上限的数字
例如:0 until 5 //Range(0,1,2,3,4)
注意:0 until 5实际上是一个方法调用0.until(5)
如下结构:
for(i< 区间)会让i遍历该区间的所有值
但如果想要每两个元素一跳,可以这样遍历:
0 until (a.length,2)//后面参数就是几个元素一跳
如果想要从尾部开始遍历:
(0 until a.length).reverse
如果不需要数组下表的话,可以使用下面的方式:
for(elem <- a) println(elem)//elem会先辈设定成a(0),然后a(1)······
数组转换
在Scala中可以很方便的进行数组的转换,从一个数组(或数组缓冲)出发,对其进行某种转换是很简单的,这些转换动作并不会改变原有数组,而是会产生一个新的数组。
像这样使用for的推导式:
val a = Array(1,2,3,4)
val b = for(elem <-a) yield 2 * elem//得到的是:b=Array(2,4,6,8)
for (······) yield循环创建了一个与原始数组类型相同的新数组,同样重数组缓冲出发,得到的是数组缓冲,结果包括yield后面的表达式的值,每次迭代对应一个。
通常,在遍历一个集合时,如果只想处理数组中特定的元素,可以通过守位(if)进行实现,例如:
for(elem <-a if elem % 2 ==0 )yield 2 * elem
//对a集合中的偶数元素进行翻倍吗,并丢弃奇数元素
注意:结果是一个新的数组,原有数组并没有受到影响

0 0
原创粉丝点击