Scala集合
集合概述


1. 元组Tuple
元组:可以存放各种相同或不同类型的数据,对数据没有过多的约束
注:元组最大只能有22个元素
1.1 元组的创建
val t1 = (1,2,"aa",3)
val t2 = 1 -> "a"
val t3 = 3 -> "b" -> "king" //((3,b),king)
1.2 元组的访问
访问元组中的数据,可以采用顺序号(_顺序号),也可以通过索引(productElement)访问。
object T1 {
def main(args:Array[String]):Unit = {
val t1 = (1,2,"a","b")
println(t1._1)
println(t1.productElement(0))
}
}
1.3 元组的遍历
Tuple是一个整体,遍历需要调用其迭代器
var t1 = (1,"a","b",true)
//遍历元组
for( item <- t1.productIterator ){
println( item )
}
2. 数组
2.1 定义数组(第一种方式)
此处的数组等同于Java中的数组,中括号的类型即为数组的类型 [从此可得,数组内元素类型必须相同]
val arr = new Array[Int](10)
//赋值,集合元素采用小括号访问
arr(1) = 6
2.2 定义数组(第二种方式)
//定义时,直接赋值;使用apply方法创建数组对象
val arr = Array(1,2,3)
###2.3 变长数组(声明泛型)
```scala
object CollTest {
def main(args: Array[String]): Unit = {
val arr01 = ArrayBuffer[Any](3, 2, 5)
println("arr01(1)=" + arr01(1))
for (i <- arr01) {
println(i)
}
println(arr01.length)
println("arr01.hash=" + arr01.hashCode()) //arr01.hash=110266112
arr01.append(90.0,13)
println("arr01.hash=" + arr01.hashCode()) //arr01.hash=-70025354
arr01(1) = 89 //修改
for (i <- arr01) {
println(i)
}
arr01.remove(0)
for (i <- arr01) {
println(i)
}
println("最新的长度=" + arr01.length) //4
}
}
变长数据分析小结
- ArrayBuffer是变长数组,类似Java中的ArrayList
- val arr = ArrayBuffer[Int] () 也是使用apply方法构建对象
- def append(elem:A*) {appendAll(elems)} 接收的是可变参数
- 每次append,arr在底层会重新分配空间,进行扩容,arr的内存地址会发生变化,也就成为新的ArrayBuffer
2.4 定长数组与变长数组的转换
arr1.toBuffer //定长数组转 可变数组
arr2.toArray //可变数组转定长数组
2.5 Scala数组与Java的 list的互转【好像只限于元素类型为String】
// Scala集合和Java集合互相转换
val arr:ArrayBuffer[String] = ArrayBuffer("1", "2", "3")
import scala.collection.JavaConversions.bufferAsJavaList
val javaArr = new ProcessBuilder(arr)
val arrList = javaArr.command()
println(arrList)

浙公网安备 33010602011771号