暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Scala函数式编程-数组

碧茂大数据 2021-06-03
142
更多精彩,请点击上方蓝字关注我们!

1 Scala数组

  • 数组是最常用的收集一系列元素的结构

  • 数组的声明与其他数值类型声明类似

  • 定长数组声明

    • val A= new Array [T] (N) val A=new Array [Int] (10)

    • 数组声明时若不给出值,会被初始化,初始化后同样能对数组成员进行赋值

  • 数组成员初始化,如Int类型的会都被初始化为0,String类型的会被初始化为Null

    • val B=Array(N1 ,N2)

  • 数组声明时若给出值,Scala可以进行类型推断,可以不用声明数组类型、长度

    • A(n)=Nn n(0,N-1) B(0)=N1

  • 数组初始化后能赋值,或是对指定数组成员赋值

    • val G=B+Array(1,2) val G=B-Array(1,2)

2 变长数组声明与操作

  • import scala.collection.mutable.ArrayBuffer

  • 声明一个空的数组缓存,此时C是一个全为空的数组,数组元素为0  val C= new ArrayBufferT

  • 在数组尾部增加一个类型为T的元素e1

    • C += e1 C:ArrayBuffer(e1)

  • 在数组尾部增加类型为T的元素e2, e3

    • C +=(e2, e3) C:ArrayBuffer(e1 , e2, e3)

  • 在数组尾部增加数组Array(e2, e3)

    • C++=Array(e2, e3) C:ArrayBuffer(e1 , e2, e3, e2, e3)

  • 移除最后1个元素

    • C.trimEnd(1) C:ArrayBuffer(e1 , e2, e3, e2)

  • 在第二个元素后插入e3

    • C .insert(2, e3) C:ArrayBuffer(e1 , e2, e3,e3, e2)

  • 在第二个元素后插入e1 , e2, e3

    • C .insert(2,e1 , e2, e3) C:ArrayBuffer(e1,e2,e1,e2, e3,e3,e3, e2)

  • 移除第三个元素后的一个元素

    • C.remove(3) C:ArrayBuffer(e1,e2,e1,e3,e3,e3, e2)

  • 移除第三个元素后的两个元素

    • C.remove(3,2) C:ArrayBuffer(e1,e2,e1,e3, e2)

  • 把变长数组C转换为定长数组D

    • D=C.toArray

  • 把定长数组A转换为变长数组E

    • E=A.toBuffer

3 数组遍历

  • 直接遍历数组的成员

    • for(i <- C) println(i)

  • 遍历数组C中的所有成员并输出

    • for(i <- 0 to (C.length-1))println(C(i))

  • 每两个元素一条进行遍历

    • for(i <- 0 to (C.length,2) ) println(C(i))

  • 倒序遍历

    • for(i <- (0 to C.length).reverse)println(C(i))

  • 通过for语句枚举数组成员,可以实现多种数组控制,如把数组成员各加1并生成新数组:val NEW=for(i <- C) yield i+1

    • 这种数组生成是对应原数组类型的(定长/变长)

4 数组实战

/** 数组 
*/

//定长数组
val ar1 = new Array[Int](3)
ar1(0) = 1
ar1(1) = 2
ar1(2) = 3

//直接初始化
var ar2 = Array(3,4,5)

//ArrayBuffer
import scala.collection.mutable.ArrayBuffer
val buf = ArrayBuffer[Int]()
buf += (1,2)
buf ++= (for(i <- 3 to 6) yield i)
buf.toArray buf.insert(2,7)
buf.remove(3)

//遍历数组
for(i <- ar1 if i >1) println(i)


关注公众号:

  • 领取精彩视频课程

  • 海量免费语音课程


文章转载自碧茂大数据,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论