3.scala容器

96
bigdataer
2017.03.14 19:40* 字数 237

版权申明:转载请注明出处。
文章来源:http://bigdataer.net/?p=251

排版乱?请移步原文获得更好的阅读体验

3.1数组

(1) 定长数组(Array)

//直接声明使用
val array = Array("a","b","c")

//设置数组长度并赋值
val array = new Array[String](3)
array(0) = "a"
array(1) = "b"
array(2) = "c"

(2) 数组缓冲(ArrayBuffer)
数组缓冲是一种可变的数组,类似于Java中的ArrayList,但是ArrayBuffer提供了非常丰富的api

//声明
import scala.collection.multable.ArrayBuffer
val buf = new ArrayBuffer[Int]()

//添加单个元素
buf += 1

//添加多个元素
buf ++= (2,3,4)

//追加一个数组
buf ++= Array(5,6,7)

更多操作可以参考API文档

(3)数组的高级API

//数组内元素求和
Array(1,3,5).sum
//取最大值
Array(1,2,4).max
//排序
val newArray = Array(3,2,5,7,1).sortWith(_>_)

可以自定义排序方法,或者使用scala提供的排序方法,如:

val a = Array(3,2,5,7,1)
//使用快排
scala.util.Sorting.quickSort(a) //不会产生新的数组,原来数组中的元素位置改变

注意:ArrayBuffer不能排序,因为数组缓冲中的元素个数不确定。

(4)与Java互操作
java.util.List转化为scalaArrayBuffer:import scala.collection.JavaConversions.asScalaBuffer
ArrayBuffer转java List: import scala.collection.JavaConversions.bufferAsJavaList

3.2映射

scala中映射也分可变映射和不可变映射。

//创建一个不可变映射
val rank = Map("zs" -> 3,"ls" -> 4)

//创建一个可变的映射,两种方法
val rank = scala.collection.multable.Map("zs" -> 3,"ls" -> 4)
val rank  = new scala.collection.multable.Map[String,Int]()

//添加删除元素
rank +=("ww" -> 5,"zl" -> 6)
rank -= "ww"

//更新可变映射
rank("zs") = 30 

//迭代映射
for((k,v) <- map){ some code}

3.3元组

元组是一种能存放不同数据类型的容器,一般声明如下:

//声明
val tuple = (11.11,12,"bb")

//遍历
tuple.foreach{}
scala
Web note ad 1