博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Scala之数组
阅读量:6328 次
发布时间:2019-06-22

本文共 2886 字,大约阅读时间需要 9 分钟。

hot3.png

1. 数组

1.1. 定长数组

使用 Array 定义一个长度不变的数组。

object ArrayDemo {  def main(args: Array[String]){    //初始化一个长度为8的定长数组,其所有元素均为0    val arr1 = new Array[Int](8)    //直接打印定长数组,内容为数组的hashcode值    println(arr1)    //将数组转换成数组缓冲,就可以看到原数组中的内容了    //toBuffer会将数组转换长数组缓冲    println(arr1.toBuffer)    //注意:如果不使用new获取数组,相当于调用了数组的apply方法,直接为数组赋值    //初始化一个长度为1,值为10的定长数组    val arr2 = Array[Int](10)    //输出数组元素值    println(arr2.toBuffer)    //定义一个长度为3的定长数组    val arr3 = Array("hadoop", "storm", "spark")    //使用()来访问元素    println(arr3(2))    //包含10个整数的数组,初始化值为0     val nums = new Array[Int](10)    //遍历数组    for(i <- 0 until nums.length)      print(s"$i:${nums(i)} ")      println()    //包含10个字符串的数组,初始化值为null    val strs0 = new Array[String](10)    for(i <- 0 until strs0.length)      print(s"$i:${strs0(i)} ")      println()    //赋初值的字符串数组    val strs1 = Array("hello" ,"world")    for(i <- 0 until strs1.length)      print(s"$i:${strs1(i)} ")      println()    //访问并修改元素值    strs1(0) = "byebye"    for(i <- 0 until strs1.length)      print(s"$i:${strs1(i)} ")      println()  }}

执行结果:

1.2. 变长数组

使用 ArrayBuffer 定义长度按需变化的数组。

import scala.collection.mutable.ArrayBufferobject VarArrayDemo {  def main(args: Array[String]){    //定义一个空的可变长Int型数组    val nums =  ArrayBuffer[Int]()    //在尾端添加元素    nums += 1    //在尾端添加多个元素    nums += (2,3,4,5)    //使用++=在尾端添加任何集合    nums ++= Array(6,7,8)   //使用增强for循环进行数组遍历       for(elem <- nums)      print(s"$elem ")    println()    //移除最后2元素    nums.trimEnd(2)    //在下标2之前插入元素    nums.insert(2,20)    nums.insert(2,30,30)        //使用增强for循环进行数组遍历    for(elem <- nums)      print(s"$elem ")    println()    //从下标2出移除一个或者多个元素    nums.remove(2)    nums.remove(2,2)        //使用增强for循环进行数组遍历    for(elem <- nums)      print(s"$elem ")    println()  }}

执行结果:

1.3. 遍历数组

1.增强 for 循环,参见变长数组的代码;

2.好用的 until 会生成脚标,0 until 10 包含 0 不包含 10 参见定长数组部分代码。

1.4. 数组转换

yield 关键字将原始的数组进行转换会产生一个新的数组,原始的数组不变 。

bject ArrayTransfer {  def main(args: Array[String]): Unit = {    //使用for推导式生成一个新的数组    val a = Array(1, 2, 3, 4, 5, 6, 7, 8, 9)    val res1 = for(elem <- a) yield 2*elem    for(elem <- res1)      print(elem+" ")    println()    //对原数组元素过滤后生成一个新的数组    //将偶数取出乘以10后再生成一个新的数组    val res2 = for(elem <- a if elem%2 == 0)yield 2*elem    for(elem <- res2)      print(elem+" ")    println()    //使用filter和map转换出新的数组    val res3 = a.filter(_ % 2 == 0).map(2 * _)    for(elem <- res3)      print(elem+" ")    println()  }

执行结果:

1.5. 数组常用算法

在 Scala 中,数组上的某些方法对数组进行相应的操作非常方便!

object ArrayAlgorithm {  def main(args: Array[String]): Unit = {    val a = Array(9, 1, 2, 5, 3, 7, 8, 4)    //求和    val res1 = a.sum    println(res1)    //求最大值    val res2 = a.max    println(res2)    //排序    val res3 = a.sorted    // val res4 = a.sortWith(_>_)指定排序方式    for(elem <- res3)      print(elem + " ")  }}

执行结果:

本文为原创文章,如果对你有一点点的帮助,别忘了点赞哦!比心!如需转载,请注明出处,谢谢!

 

转载于:https://my.oschina.net/aibinxiao/blog/2991747

你可能感兴趣的文章
网络集中投射了全部安全问题
查看>>
WhatsApp宣布免费 欲变身一站式企业式服务应用
查看>>
红帽计划收购API管理领导者3scale
查看>>
边缘计算+SDN:为物联网腾飞插上翅膀
查看>>
TP-LINK、迅捷等品牌路由器存在质量问题
查看>>
商务部强势回应 欧盟裁定高额税率方法不合理
查看>>
标准化工作取得新突破 窄带物联网商用指日可待
查看>>
《高性能科学与工程计算》——3.7 习题
查看>>
SDN商用落地:遍地开花不代表全面实现
查看>>
查看Linux服务器下的内存使用情况
查看>>
CIO无法忽视的三大云角色
查看>>
敏捷开发和测试中重现缺陷和验证缺陷的解决方案(2)
查看>>
六大策略迎接数据中心巨大变革
查看>>
Android客户端捕获http请求包的方法
查看>>
迈向智慧化 物联网规模应用不断拓展
查看>>
测试计划和自动化测试思考
查看>>
VMware中国的“七年之痒”,真的会有大动荡吗?
查看>>
重大合同实为旧事 数据港信披被上交所问询
查看>>
Qt之进程间通信(QProcess)
查看>>
三星为何要在安卓之外开发 Tizen 系统?
查看>>