3. Scala数组
来源:互联网 发布:sql 累加函数 编辑:程序博客网 时间:2024/06/07 23:52
数组
数组的创建和赋值
- 声明类型
- 数组必须用val来修饰,表示不可变的数组
new Array[String](10)
是用来创建一个String类型的数组,并开辟长度为10的空间- arrays(0)给第0个元素赋值
println("打印一串数组,声明其类型,方式一:") //@1 创建方式一 val arrays = new Array[String](10) arrays(0) = "A" arrays(1) = "B" for (item <- arrays) print(" " + item)
- 不声明类型
- scala会根据赋值类型自动推倒类型。
Array(1,2,3,4,5)
来直接给数组赋值
println("打印一串数组,自动推到类型,方式二:" + "\n") val arrays2 = Array(1,2,3,4,5) for (item <- arrays2) print(" " + item)
- 直接用applay赋值
println("打印一串数组,使用apply创建数组,方式二:" + "\n") val arrays3 = Array.apply("scala","Spark","kafka") for (item <- arrays3) print(" " + item)
多维数组
创建二维数组
Array._
是导入Array下面的所有包- 使用
ofDim[Int](3,3)
创建二维数组
def manyArray(): Unit ={ /** * 导入包 */ import Array._ var array = ofDim[Int](3,3) var value=0 for (i <- 0 to 2){ for (j <- 0 to 2){ array(i)(j) = value; value += 1 } } println("二维数组打印:") for (arr <- array){ for (a <- arr){ print(" " + a) } } }
- 查看
ofDim
源码
- 仔细阅读以下源码,实现多维数组也就是数组里面套数组。
例如二维数组用new Array[Array[T]]
表示,三维数组用Array[Array[Array[T]]]
表示。- 五维数组的实现是调用
tabulate(n1)(_ => ofDim[T](n2, n3, n4, n5))
方法来获取四维数组,四维数组同样调用tabulate(n1)(_ => ofDim[T](n2, n3, n4))
获取三维数组,这里使用了一个递归的思想。最后二维数组返回arr
//二维数组def ofDim[T: ClassTag](n1: Int, n2: Int): Array[Array[T]] = { val arr: Array[Array[T]] = (new Array[Array[T]](n1): Array[Array[T]]) for (i <- 0 until n1) arr(i) = new Array[T](n2) arr // tabulate(n1)(_ => ofDim[T](n2)) } //三维数组 def ofDim[T: ClassTag](n1: Int, n2: Int, n3: Int): Array[Array[Array[T]]] = tabulate(n1)(_ => ofDim[T](n2, n3)) //四维数组 def ofDim[T: ClassTag](n1: Int, n2: Int, n3: Int, n4: Int): Array[Array[Array[Array[T]]]] = tabulate(n1)(_ => ofDim[T](n2, n3, n4)) //五维数组 def ofDim[T: ClassTag](n1: Int, n2: Int, n3: Int, n4: Int, n5: Int): Array[Array[Array[Array[Array[T]]]]] = tabulate(n1)(_ => ofDim[T](n2, n3, n4, n5))
数组其他使用
- concat函数
可以将两个数组合并在一起。
println("concat 组合数组:") var arry1 = Array(1,2,3) var arry2 = Array(4,5,6) var arry3 = concat(arry1,arry2) for (arr <- arry3) print(" " + arr)
- range函数
- 可以设置数组的开始大小和结束大小,并设置数组的步长。
例如range(10,20,2)
: 打印一个数组开始为10,结束为20,步长为2的数组。- 步长不能为0。
def rangeArray(): Unit ={ import Array._ val array1 = range(10,20,2) val array2 = range(200,10) println("range step = 2 打印:") for (arr <- array1) print(" " + arr) println() println("range step = 1 打印:") for (arr <- array2) print(" " + arr) }
- fill函数
返回一个数组长度为10的数组,数组每个值为2
def fillArray(): Unit ={ val array = Array.fill(10)(3) for (arr <- array) print(" " + arr) }
阅读全文
0 0
- 3. Scala数组
- scala数组
- Scala数组
- scala-数组
- Scala:数组
- scala数组
- Scala数组
- Scala 数组
- Scala数组
- Scala数组
- Scala---数组
- Scala数组
- Scala数组
- Scala 数组-Array
- Scala数组操作
- Scala数组等
- Scala数组使用
- Scala数组操作
- C语言函数返回值问题
- Max Consecutive Ones
- 强大的RecyclerView实现复杂布局
- Ubuntu Kylin16.04 安装Hadoop2.7.4 伪分布式
- note关于GitHub
- 3. Scala数组
- Dubbo
- 单片机学习札记4---调试蜂鸣器驱动
- 新手linux 推荐
- Material Design学习之RecyclerView(更强大的滚动控件)(4)
- 说说搜索引擎中的人工干预
- C语言利用栈判断字符串是否为回文
- CString或宽字符串转换成10进制整数的两种办法
- 枚举类