文章地址:http://www.haha174.top/article/details/255656
1.Array
在scala 中Array 代表的含义和java 类似,也是长度不可改变的数组。此外由于scala都是运行在jvm中的双方可以相互调用,一次scala数组实际上还是java数组。
数组初始化之后长度就固定下来了,而且元素全部都根据其类型进行初始化
var a=new Array[Int](10)
var b=new Array[String](10)
可以直接使用Array()创建数组,元素的类型自动推断
var a=Array("hello","world")
a(0)="hi"
2.ArrayBuffer
在scala 中如果需要类似于java中的ArrayList这种长度可以变化的集合,可以使用Arraybuffer
大致如下:
//需要先导入
import scala.collection.mutable.ArrayBuffer
var b=ArrayBuffer[Int]()
//使用+=可以添加一个元素或者多个元素
b+=1
b+=(2,3,4,5)
//使用++=可以添加其他集合中所有的元素
b++=Array(6,7,8,9,10)
//使用trimEnd 可以从尾部截断指定个数的元素
b.trimEnd(5)
//使用insert 可以在指定的位置
b.insert(5,6)//在第五个位置上插入6
b.insert(5,6,7,8,9,10)//在第五个位置上插入6,7,8,9,10
使用remove 可以移除指定位置的元素。
b.remove(1)//移除下标为1的元素
b.remove(1,3)//移除下标1到3的元素
//array 和arrayBuffer 可以相互转化的
b.toArray
a.toBuffer
3.数组常见操作
3.1遍历Array 和Arraybuffer
使用for 循环和until 遍历Array/arrayBuffer
//使用until 的RichInt 提供的函数
for(i<-0 until b.length)
println(b(i))
//跳跃遍历
for(i<-0 until (b.length,2))
println(b(i))
//尾部遍历
for(i<-(0 until b.length).reverse)
println(b(i))
//增强for 循环
for(e<-b)
println(e)
3.2 数组元素求和
var a=Array(1,2,3,4,5)
var sum=a.sum
3.3 获取数组最大值
var max=a.max
3.4 对数组进行排序
scala.util.Sorting.quickSort(a)
3.5获取数组中所有元素的内容
a.mkString()
a.mkString(",")
a.mkString("<",",",">")
//toString
a.toString
b.toString
4.数组转换
4.1 使用yoeld和函数式编程转换数组
对于Array 进行转换获取的还是Array
var a=Array(1,2,3,4,5)
var a2=for(ele<- a) yield ele *ele
//对ArrayBuffer 进行转换
var b=ArrayBuffer[Int]()
b+=(1,2,3,4,5)
var b2=for(ele<-b) yield ele*ele
//结合if 守卫
var a3=for(ele<- if ele %2==0) yield ele*ele
//使用函数式编程转换数据(通常采用第一种方式)
a.filter(_% 2==0).map(2*_)
a.filter{_% 2==0}.map{2*_}