3.scala容器
2017-03-14 本文已影响44人
bigdataer
版权申明:转载请注明出处。
文章来源: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{}