数组操作

  • 初始化固定长度的数组
// 初始化长度为10的数组
val array = new Array[Int](10)
// 初始化创建含有hello与Scala的数组
val s = Array("hello","scala")
  • 创建可变的数组(类似java的集合)
Scala中创建长度可变的数组,类似与java中的ArrayList一样Scala提供了ArrayBuffer,下面是ArrayBuffer的用法:
// 创建集合等同于下面的new ArrayBuffer[Int]()
val b = ArrayBuffer[Int]()
new ArrayBuffer[Int]()
// 集合添加元素类似与java中的list.add()多次调用添加函数
b += (1, 2, 3, 4, 5, 6)
// 可以追加新的集合元素类似java中的list.addAll()
b ++=Array(7,8,9,10)
// 移除前//5个元素
b.trimStart(5)
/**
* 数组尾部删除或者添加元素是非常快,但是中间 * 插入元素或者移除元素,操作较慢
*/
val c = new ArrayBuffer[Int]()
c+=(1,2,3)
// 在索引2处插入元素6
c.insert(2,6)// ArrayBuffer(1, 2, 6, 3)
// 删除索引为2元素
c.remove(2)
// 删除索引1后一个元素
c.remove(1,1)
有时候创建元素,不知道存储多少元素可以创建数组缓存ArrayBuffer,然后调用toArray方法将缓冲区间转为Array(类似于java中StringBuffer.toString方法)
  • 遍历数组和数组缓冲
    val a = ArrayBuffer[Int]()
a+=(1,2,3,4,5,6)
//遍历数组(变量i取值从0到a.length-1)
for(i<- 0 until a.length) println(a(i))
println(a(i)
// 遍历偶数下标索引元素
for(i<- 0 until (a.length,2)) println(a(i))
// 倒着遍历索引
for(i<- (0 until a.length).reverse) println(a(i))
// yield元素填充
val result =for (e <- list) yield e *2
// 数组转换
val list = Array(1, 2, 3, 4)
// yield元素填充
val result = for (e <- list) yield e * 2
println(result.toBuffer)
// 舍弃偶数元素
val res = for (e <- list if e % 2 == 0) yield e
println(res.toBuffer)
// 也可以使用函数式编程使用filter和Map
val req = a.filter(_ % 2 == 0).map(2 * _)
}
  • Scala的常用算法
Scala中有计算求和和排序
val list = Array(1, 2, 3, 4)
// 求和,求数组最大值,排序,而排序并不会影响原有的数组
println(list.sum, list.max,list.sorted.toBuffer)
方法 方法描述
def append(elems:A*):Unit 方法接受多个类型为A的元素,例如b.append(1,2)将对b追加2个元素
def count(p:(A)=>Boolean):Int 方法接受一个布尔值表达式,例如a.count(_>0)将会统计多个正数

方法demo

    val list = Array(8, 5, 1, 2, 3, 4)
val bs = list.sorted.toBuffer
bs.append(1,2)
println(bs)
// 统计集合大于4的元素个数
println( bs.count(_ > 4))

Scala数组操作的更多相关文章

  1. Scala 数组操作之Array、ArrayBuffer以及遍历数组

    ArrayBuffer 在Scala中,如果需要类似于Java中的ArrayList这种长度可变的集合类,则可以使用ArrayBuffer. // 如果不想每次都使用全限定名,则可以预先导入Array ...

  2. Scala数组操作实战详解

    增删改查,要注意的是,Array数组是定长数组,ArrayBuffer数组才是变长数组. 其他集合也存在可变不可变.例如,List,Set,Map 多维数组定义方法与Java类似.

  3. Scala 数组操作之数组转换

    使用yield和函数式编程转换数组 // 对Array进行转换,获取的还是Array val a = Array(1, 2, 3, 4, 5) val a2 = for (ele <- a) y ...

  4. Scala编程入门---数组操作之Array.ArrayBuffer以及遍历数组

    在Scala中,Array代表的含义与Java类似,也是长度不可改变的数组.此外,由于Scala与java都是运行在JVM中,双方可以互相调用,因此Scala数组底层实际上是java数组.列如字符串数 ...

  5. [转] Scala 的集合类型与数组操作

    [From] https://blog.csdn.net/gongxifacai_believe/article/details/81916659 版权声明:本文为博主原创文章,转载请注明出处. ht ...

  6. Scala数组| 集合

    arrays :+ 5尾部   头部5 +: arrays TODO 声明不可变数组,不能删; 默认情况下,scala中集合的声明全都是不可变的 val arrays: Array[Int] = Ar ...

  7. Spark记录-Scala数组

    Scala提供了一种数据结构叫作数组,数组是一种存储了相同类型元素的固定大小顺序集合.数组用于存储数据集合,但将数组视为相同类型变量的集合通常更为有用. 可以声明一个数组变量,例如:numbers,使 ...

  8. Scala数组和集合

    一.scala数组 数组定义1: var arr = new Array[String](3) String:存储的元素类型 3:存储3个元素 添加元素: arr(1) = "hello&q ...

  9. Scala实战高手****第6课 :零基础实战Scala集合操作及Spark源码解析

    本课内容1.Spark中Scala集合操作鉴赏2.Scala集合操作实战 --------------------------------------------------------------- ...

随机推荐

  1. linux gcc 区分32位或64位编译 && 请问arm存储,是以小端格式还是以大端格式?

    linux gcc 区分32位或64位编译   Linux系统下程序如何区分是64位系统还是32位系统 经过对include的翻查,最后确定gcc以__i386__来 进行32位编码,而以__x86_ ...

  2. pipenv

    一. 1. 使用pip安装pipenv及其相关依赖 pip install pipenv 2. 将目录更改为包含你的Python项目的文件夹,并启动Pipenv cd my_project pipen ...

  3. Salesforce平台支持多租户Multi tenant的核心设计思路

    Multitenancy is the fundamental technology that clouds use to share IT resources cost-efficiently an ...

  4. 两天学会css基础(二)

    接上一篇博客,还有css中的两个重要知识点没有说到,就是元素的浮动与定位. 第三部分:元素的浮动与清除 这部分的内容之前的博客已总结过.请查看css中的浮动与三种清除浮动的方法这篇文章. 浮动在网页中 ...

  5. 两天学会css基础(一)

    什么是css?css的作用是什么? CSS 指层叠样式表 (Cascading Style Sheets)主要作用就是给HTML结构添加样式,搭建页面结构,比如设置元素的宽高大小,颜色,位置等等. 学 ...

  6. 小白学CMD下运行MySQL

    将mysql目录下bin目录中的mysql.exe放到C:\WINDOWS下,可以执行以下命令 连接:mysql -h主机地址 -u用户名 -p用户密码 (注:u与root可以不用加空格,其它也一样) ...

  7. python面向对象之类成员

    面向对象编程: OOP编程是利用类和对象来创建各种模型来实现对真实世界的描述,使用面向对象编程的原因一方面是因为它可以使程序的维护和扩展变得简单,并可以大大提高程序开发效率.另外,基于面向对象的程序可 ...

  8. 1085. [SCOI2005]骑士精神【IDA※】

    Description 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位.在任何时候一个骑士都能按照骑 士的走法(它可以走到和它横坐标相差为1,纵坐标相差为2或者横坐标相差为2 ...

  9. 4、Android-数据存储方案(使用LitePal操作数据库)

    4.5.使用LitePal操作数据库 4.5.1.LitePal简介 LitePal是一款开源的Android数据库框架 采用了关系映射(ORM)的模式 将经常使用的一些数据库做了封装 是得不用编写S ...

  10. ethereumjs/ethereumjs-block-3-tests

    之前可以先了解一下另一个模块,看本博客的ethereumjs/ethereumjs-common部分内容 通过tests测试文件能够帮助更好了解API的使用 ethereumjs-block/test ...