Scala--数组相关操作

一、定长数组

Array定长数组,访问数组元素需要通过()

val nums = new Array[Int](10)  //长度为10的int数组 初始化为0
val strs = new Array[String](10) //长度为10的String数组 初始化为null
val s = Array("Hello", "World") //初始化数组长度为2,不需要new
s(0) = "GoodBye"  //访问数组元素通过()
println(nums(0))
println(strs(0))
println(s(0)+" "+s(1))

结果

0
null
GoodBye World

二、变长数组

变长数组使用ArrayBuffer

import scala.collection.mutable.ArrayBuffer

val b = ArrayBuffer[Int]()

b+=1
  //在尾端添加元素
  //ArrayBuffer(1)
b+=(2,3,4,5)
  //在尾端添加多个元素
  //ArrayBuffer(1,2,3,4,5)
b++=ArrayBuffer(8,19,20)
  //可以使用++-操作符追加任意集合
  //ArrayBuffer(1,2,3,4,5,8,19,20)
b.trimEnd(3)
  //在尾部删除3个元素
  //ArrayBuffer(1,2,3,4,5)
b.insert(2,6)
  //在下标2之前插入6
  //ArrayBuffer(1,2,6,3,4,5)
b.insert(3,7,8,9)
  //在下标3之前插入7,8,9
  //ArrayBuffer(1,2,6,7,8,9,3,4,5)
b.remove(2)
  //删除下标为2的元素
  //ArrayBuffer(1,2,7,8,9,3,4,5)
b.remove(2,3)
  //从下标为2的元素开始,删除3个元素
  //ArrayBuffer(1,2,3,4,5)

val c = b.toArray //不知道元素个数先构建ArrayBuffer,然后再转化成数组
println(c(0))
println(c.toBuffer) //数组转化成数组缓冲

结果

1
ArrayBuffer(1, 2, 3, 4, 5)

三、遍历数组和数组缓冲

for(i<- 0 until b.length) print(c(i)) //直接通过下标访问数组,until 不包括上线
println()
for(i<- 0 until (b.length,2))  print(b(i)) //step = 2 步长为2
println()
for(i<- (0 until b.length).reverse)  print(b(i)) //反转
println()
for(i<- b) print(i) //不使用数组下标直接访问元素
println()

结果

 12345
  135
  54321
  12345

四、数组转换

通过for yield对数据进行转换

val a = Array(2,3,5,7,11)
val b = for(i<- a if i%2 !=0)  yield i * 2 //生成一个新的数组
for(i<- b) print(i+" ")

结果

6 10 14 22

五、常用算法

import scala.util.Sorting.quickSort
val a = Array(2,9,5,7,11)

println(a.sum)
println(a.max)
quickSort(a)
println(a.toBuffer)
println(a.mkString(" and "))
println(a.mkString("<"," and ",">"))
println(a.toString)
println(a.toBuffer.toString())    

结果

34
11
ArrayBuffer(2, 5, 7, 9, 11)
2 and 5 and 7 and 9 and 11
<2 and 5 and 7 and 9 and 11>
[[email protected]
ArrayBuffer(2, 5, 7, 9, 11)

六、解读scaladoc

七、多维数组

八、与java互操作

参考《快学Scala》

时间: 2024-08-01 01:16:02

Scala--数组相关操作的相关文章

快学Scala习题解答—第三章 数组相关操作

3 数组相关操作 3.1 编写一段代码,将a设置为一个n个随机整数的数组,要求随机数介于0(包含)和n(不包含)之间 random和yield的使用 Scala代码   import scala.math.random def randomArray(n:Int)={ for(i <- 0 until n) yield (random * n).toInt } println(randomArray(10).mkString(",")) 3.2 编写一个循环,将整数数组中相邻的元

Scala学习(三)----数组相关操作

数组相关操作 摘要: 本篇主要学习如何在Scala中操作数组.Java和C++程序员通常会选用数组或近似的结构(比如数组列表或向量)来收集一组元素.在Scala中,我们的选择更多,不过现在我们先假定不关心其他选择,而只是想马上开始用数组.本篇的要点包括: 1. 若长度固定则使用Array,若长度可能有变化则使用ArrayBuffer 2. 提供初始值时不要使用new 3. 用()来访问元素 4. 用for (elem<-arr)来遍历元素 5. 用for (elem<-arr if…)…yie

Scala详解---------数组相关操作

Scala中提供了一种数据结构-数组,其中存储相同类型的元素的固定大小的连续集合.数组用于存储数据的集合,但它往往是更加有用认为数组作为相同类型的变量的集合. 取替声明单个变量,如number0, number1, ..., 和number99,声明一个数组变量,如号码和使用numbers[0],numbers[1],...,numbers[99]表示单个变量.本教程介绍了如何声明数组变量,创建数组和使用索引的过程变量数组.数组的第一个元素的索引是数字0和最后一个元素的索引为元素的总数减去1.

从零学scala(二)数组相关操作、映射和元组

一:数组相关操作 定长数组 val array = Array[String]("a","b","c") //直接初始化数组的内容        println(array.mkString("|")) val array = new Array[String](2) //new一个长度为2的数据在通过更新的方法进行赋值        array.update(0, "0")        array.up

快学SCALA(3)--数组相关操作

val a = Array(2, 4, 5, 6) val result = for(elem <- a) yield 2 * elem //result = (4,8, 10, 12) val result1 = for(elem <- a if elem % 2 == 0) yield 2 * elem //result1 = (4,8,12) val result2 = a.filter(_ % 2 == 0).map(2 * _ ) //result = (4,8,12) val re

scala 入门(2)--数组相关操作

scala 无论从数组的定义还是操作方面来说都跟java非常相似,但又有其独特的强大之处… 1. 定长数组 对于长度不变的数组,可以用scala中的Array. //scala 里使用new实例化对象. 实例化过程中,可以用值和类型使对象参数化(创建对象的同时完成对它的设置) val nums = new Array[Int](5); //含5个整数的数组,元素默认初始化为0: val arr = new Array[String](10);  //含10个字符串的数组,元素默认初始化为null

scala学习3 数组相关操作映射和元组

一.定长数组 如果需要一个长度不变的数组,可以使用Scala中的Array. val nums = new Array[int](10) val s = Array("Hello","world") 二.变长数组:数组缓冲 1. val b = ArrayBuffer[int]() 2.追加元素 b +=(1,2,3,4,5) 3.追加任何集合 b ++= Array(8,13,21) 4.移除最后5个元素 b.trimEnd(5) 5.插入元素 b.insert(

scala学习第三章数组相关操作

val b = new ArrayBuffer[Int]() //或者 new ArrayBuffer[Int] b += 1 //ArrayBuffer(1) 用+= 在尾端添加元素 b += (1,2,3,5) //ArrayBuffer(1,1,2,3,5) 在尾端添加多个元素 b ++= Array(1,2,3) //ArrayBuffer(1,1,2,3,5,1,2,3) 在尾端追加集合 用++= b.trimEnd(5) //ArrayBuffer(1,1,2) 移除最后5个元素 b

快学Scala-第三章 数组相关操作

知识点: 1.定长数组 Array val nums = new Array[Int](10) //10个整数的数组,所有元素初始化为0 val a = new Array[String](10) //10个元素的字符串数组,所有元素初始化为null val s= Array("Hello","World") //长度为2的Array(String) 类型是编译器推断出来的,已提供初始值就不需要new s(0) = "Goodbye" //Arr

Ch03 数组相关操作 - 练习

1. 编写一段代码,将a设置为一个n个随机数的数组,要求随机数介于0(包含)和n(不包含)之间. //import java.lang.Math def getArray(n:Int)={   val nums = new Array[Int](n)   for(i <- 0 until nums.length){     nums(i) = (Math.random() * n).toInt    }   nums }   getArray(10) //res18: Array[Int] =