数组

scala中,有两种数组,一种是定长数组,另一种是变长数组

定长数组

  • 定长数组指的是数组的长度是不允许改变的
  • 数组的元素是可以改变的
    语法:
// 通过指定长度定义数组
val/var 变量名 = new Array[元素类型](数组长度)
​
// 用元素直接初始化数组
val/var 变量名 = Array(元素1, 元素2, 元素3...)
  • 在scala中,数组的泛型使用[]来指定
  • 使用()来获取元素
    参考代码:
scala> val a = new Array[Int](100)
a: Array[Int] = Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
​
scala> a(0) = 110
​
scala> println(a(0))
110

变长数组

变长数组指的是数组的长度是可变的,可以往数组中添加、删除元素

使用方法

创建变长数组,需要提前导入ArrayBuffer类import scala.collection.mutable.ArrayBuffer
语法:
创建空的ArrayBuffer变长数组,语法结构:

 val/var a = new ArrayBuffer[元素类型]()

创建带有初始元素的ArrayBuffer

 val/var a = ArrayBuffer(元素1,元素2,元素3....)

示例一
定义一个长度为0的整型变长数组
参考代码

val a = ArrayBuffer[Int]()

示例二
定义一个包含"hadoop", “storm”, "spark"元素的变长数组
参考代码

scala> val a = ArrayBuffer("hadoop", "storm", "spark")
a: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer(hadoop, storm, spark)

添加/修改/删除元素

  • 使用+=添加元素
  • 使用-=删除元素
  • 使用++=追加一个数组到变长数组
    参考代码
// 定义变长数组
scala> val a = ArrayBuffer("hadoop", "spark", "flink")
a: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer(hadoop, spark, flink)// 追加一个元素
scala> a += "flume"
res10: a.type = ArrayBuffer(hadoop, spark, flink, flume)// 删除一个元素
scala> a -= "hadoop"
res11: a.type = ArrayBuffer(spark, flink, flume)// 追加一个数组
scala> a ++= Array("hive", "sqoop")
res12: a.type = ArrayBuffer(spark, flink, flume, hive, sqoop)

遍历数组

可以使用以下两种方式来遍历数组:

  • 使用for表达式直接遍历数组中的元素
  • 使用索引遍历数组中的元素
    参考代码:
scala> val a = Array(1,2,3,4,5)
a: Array[Int] = Array(1, 2, 3, 4, 5)scala> for(i<-a) println(i)
1
2
3
4
5

参考代码

scala> val a = Array(1,2,3,4,5)
a: Array[Int] = Array(1, 2, 3, 4, 5)scala> for(i <- 0 to a.length - 1) println(a(i))
1
2
3
4
5scala> for(i <- 0 until a.length) println(a(i))
1
2
3
4
5

0 until n——生成一系列的数字,包含0,不包含n
0 to n ——包含0,也包含n

数组常用算法

以下为常用的几个算法:

  • 求和——sum方法
  • 求最大值——max方法
  • 求最小值——min方法
  • 排序——sorted方法
// 升序排序
scala> a.sorted
res53: Array[Int] = Array(1, 2, 4, 4, 10)// 降序
scala> a.sorted.reverse
res56: Array[Int] = Array(10, 4, 4, 2, 1)

Scala语法介绍(九):数组相关推荐

  1. Scala语法介绍(十):元组-列表-Set-Map映射

    元组 元组可以用来包含一组不同类型的值.例如:姓名,年龄,性别,出生年月.元组的元素是不可变的. 定义元组 使用括号来定义元组 val/var 元组 = (元素1, 元素2, 元素3....) 使用箭 ...

  2. scala语法 -多维数组

    不多BB,上代码 def testMatrixA () = {val matrix = Array.ofDim[Int](3, 4)printMatrix(matrix)}def printMatri ...

  3. Scala语法(一) 基础语法(变量常量判断循环数组集合)

    前言 在前面的章节中, 我们介绍了如何在Eclipse内安装Scala环境. 本章开始, 我们将讲解下Scala的基本语法. PS: 1. 个人虽然没有想转Scala语言开发的思想, 但是近来Scal ...

  4. scala函数式编程(二) scala基础语法介绍

    上次我们介绍了函数式编程的好处,并使用scala写了一个小小的例子帮助大家理解,从这里开始我将真正开始介绍scala编程的一些内容. 这里会先重点介绍scala的一些语法.当然,这里是假设你有一些ja ...

  5. php语法介绍,PHP 函数语法介绍一

    PHP 函数语法介绍一 复制代码 代码如下: function getAdder($x) { return function ($y) use ($x) { return $x + $y; }; } ...

  6. Java基础语法(九)——String类

    文章目录 Java基础语法(九)--String类 一.定义方式 二.内存 三.字符串比较相等 四.字符串常量池 (1) 直接赋值 (2)采用构造方法 (3)intern 的使用 五.理解字符串不可变 ...

  7. Scala _01介绍安装使用

    Scala介绍 1.Spark1.6中使用的是Scala2.10.Spark2.0版本以上使用是Scala2.11版本. 2.Scala官网6个特征. Java和scala可以混编 类型推测(自动推测 ...

  8. Swift翻译之-Swift语法入门 Swift语法介绍

    目录[-] Hello world - Swift 简单赋值 控制流 函数与闭包 对象和类 枚举与结构 协议和扩展 泛型 2014.6.3日,苹果公布最新编程语言Swift,Swift是一种新的编程语 ...

  9. c语言中建一个文件的语法,C语言语法介绍_文件.ppt

    C语言语法介绍_文件 第十三章 本章要点 文件的基本概念 文件的基本函数 文件的顺序读写 文件的随机读写 文件简单应用 主要内容 13.1 C文件概述 13.2 文件类型指针 13.3 文件的打开与关 ...

最新文章

  1. 华为自动驾驶实车实路测试视频曝光!
  2. 汇编语言 实现一个数字的平方
  3. VALVE SURVEY RESULTS
  4. 在Java 8中使用不带静态导入的Mockito
  5. 计算机接口控制采集时序图,自动站实时数据质量控制
  6. 成为C++高手之实战项目
  7. FatMouse's Speed hdu 1160(动态规划,最长上升子序列+记录路径)
  8. LeetCode 103. 二叉树的锯齿形层次遍历(Binary Tree Zigzag Level Order Traversal)
  9. $(document).ready(function(){});不执行
  10. 服务器千兆网卡接百兆交换机不通_一文搞懂监控工程中百兆交换机和千兆交换机的区别在哪?...
  11. 【API进阶之路】高考要考口语?我用多模态评测API做了一场10w+刷屏活动
  12. 微型计算机原理与接口实验报告,微型计算机原理与接口技术实验报告.doc
  13. 2019年最新淘宝联盟淘宝客升高佣规则
  14. pyinstaller包含html文件,pyinstaller打包exe
  15. java计算机毕业设计楼宇管理系统源码+数据库+lw文档+系统
  16. 使用谷歌(Google)TTS服务 – Java版开源gTTS及Python gTTS
  17. 王学岗移动架构34——IOC注入框架设计
  18. jAVA EE NZ2001 java EE学习总结 第七周(包含思维导图) 主要内容I/O框架、网络编程、反射
  19. 从乔布斯卸任看苹果未来三年 会否半途而废?
  20. 学生如何免费激活JetBrain所有产品(PyCharm,IDEA......)

热门文章

  1. 阿里云建站产品详细对比,教你如何选择适合自己的建站工具
  2. 营收、亏损均超预期,社交新时代Snap何以留住年轻人?
  3. 会议论文分享-FSE20-基于学习的状态修剪策略
  4. 小程序腾讯云云开发实现生成word模板
  5. 数码管循环显示0-F,中断函数
  6. (二)关于S4HC用户登陆S系统说明
  7. 涉密计算机配置文件度量失败,TCP-IP练习题(有答案)
  8. 用matlab进行模糊综合评判
  9. 一致性测试--总结_1
  10. 区块链结合物联网会碰撞出怎样的火花?