《快学scala》- 第3章 数组相关操作

第3章 数组相关操作

3.1 定长数组
val nums = new Array Int 10个元素的整数数组
val a = new ArrayString 10个元素的字符串数组
val s = Array(“Hello”,“World”) 带初始值的数组,不需要new
s(0) = “Goodbye” 使用()括号访问数组元素

3.2 变长数组:数组缓冲ArrayBuffer
Scala变长数组结构ArrayBuffer
import scala.collection.mutable.ArrayBuffer
val b = ArrayBufferInt 或 val b = new ArrayBuffer[Int] 定义一个空的数据缓冲,准备存放整数
b += 1 追加一个元素
b += (1,2,3,5) 追加多个元素
b ++= Array(8,13,21) 追加一个集合
b.trimEnd(5) 移除最后5个元素
b.insert(2,6) , b.insert(2,7,8,9) 在下标2号元素前插入
b.remove(2) 移除下标2号元素
b.remove(2,3) 移除2号开始的3个元素
val a = b.toArray 变长数组变定长数组
a.toBuffer 定长数组转变长数组

3.3 遍历数组和数组缓冲
使用下标遍历:for (i <- 0 until a.length) println (i + “:” + a(i))
until方法返回所有下于上限的整数
for (i <- 0 until(a.length,2) 步长为2
for (i <- (0 until a.length).reverse 序列反转
不使用下标,直接元素遍历:for (elem <- b) println(elem)

3.4 《数组转换》
对原数组进行处理,生成一个新数组。
for (…) yield方法:
val a = Array(2,3,5,7,11)
val result = for (elem <- a) yield 2elem
val result = for (elem <-a if elem % 2 == 0) yield 2
elem
map/filter方法:
a.filter(_ % 2 == 0).map(2*_)
实例问题:去掉数组中第一个负数以外的所有其他负数->取保留元素的下标

3.5 常用算法
数组常用的运算包括:
sum,求和,a.sum
min max,最小 最大,a.min a.max
sorted,排序生成新数组,a.sorted a.sorted.reverse
scala.util.Sorting.quickSort(a) 直接修改数组内容,对数组排序
mkString,数组输出字符串,可指定分隔符、前后缀,a.mkString(" and “) a.mkString(”<", “,”, “>”)

3.6 解读Scaladoc
Array类->ArrayOps对象

3.7 多维数组
多个数组组合为二维数组,多个n维数组组合成n+1维数组
ofDim方法定义二维空数组:val matrix = Array.ofDimDouble
(row)(column)访问元素:matrix(1,2)
不规则数组,分级定义,先定义外层数组结构,再定义内部数组。
val triangle = new ArrayArray[Int] //10个一维数组
for (i <- 0 until triangle.length)
triangle(i) = new ArrayInt

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值