Scala中集合
在Scala语言中,数组Array或者集合类(List,Set ,Map)分为可变集合和不可变集合2类
第一类:Array 和List
不可变的类名称:Array和List
可变的类名称:ArrayBuffer和ListBuffer
第二类:set和Map
可变还是不可变名称都是set或map,变化的包的名称
可变:mutable
import scala.collection.mutable._
不可变:immutable
import scala.collection.immutable._
注意:scala默认使用不可变的集合类,自动已经导 不可变 的包
Array与ArrayBuffe的定义与使用
Array不可变数组
ArrayBuffer 可变数组
定义与使用
import scala.collection.mutable.ArrayBuffer
object ArrayDemo {
def main(args: Array[String]): Unit = {
//创建不可变数组,赋值
val arr = Array(1,2,3,4,5)
//获取数组中元素:使用下标,从0开始
println(s"first element:${arr(0)}")
println(s"lenght:${arr.length}")
println(s"size:${arr.size}")
//修改数组的值
arr(0) = 55
//循环数组元素
for (item <- arr) println(item)
//只是创建数组,不赋值
var arr2 = new Array[Int](5)//数组长度是5,数据类型int
//可变数组:类似于Java中List
val buffer = new ArrayBuffer[Int]()
//添加元素
buffer += 11
buffer.+=(22)
println("=============================")
for (item <- buffer) println(item)
//修改
buffer(0) = 111
//添加一组元素 到 数组中
buffer ++= Array(55,555)
println("=============================")
for (item <- buffer) println(item)
//可变数组 转成 不可变数组
var arr3: Array[Int] = buffer.toArray
println("=============================")
arr3.foreach(println)
//将数组转成字符串
println(arr3.mkString(",")) //111,22,55,555
println(arr3.mkString("<",",",">"))// <111,22,55,555>
//Scala数组可以存储各种类型
val arr4: Array[Any] = Array(10,99.99,"laosun")
val first:Any = arr4(0)
//数据类型转换:父类 转成 子类 ,强制类型转换
val intValue = first.asInstanceOf[Int]
println(intValue)
}
}
List与ListBuffer的定义与使用
List可变的集合
ListBuffer不可变的集合
定义与使用
package com.huadian.bigdata.collection
//可变的集合
import scala.collection.mutable.ListBuffer
object ListDemo {
def main(args: Array[String]): Unit = {
//创建一个List,不可变的集合
val list: List[Int] = List(1,2,3,4,5)
//list组成:头+尾
println(s"head:${list.head}")//一个元素
println(s"tail${list.tail}")//是一个List
//当List只有一个元素的时候,head为元素,tail是一个空的集合
val list2 = List(1)
println(s"head:${list2.head}")
println(s"tail${list2.tail}")
//list创建方式二:
val list3 = 1::Nil ; //Nil.::(1), ::从右往左运算
val list4 = 1::2::3::Nil //头插法
println(list4) //1,2,3
//创建可变的List
val listBuffer = ListBuffer[Int]()
//添加元素
listBuffer +=1
listBuffer +=2
listBuffer +=3
listBuffer ++=List(4,5,6)
listBuffer +=(7,8,9)
//可变的List转成不可变
val list5 = listBuffer.toList
println(list5.mkString(","))
//判定List是否为空
println(list5.isEmpty)
//判定list是否存在某个元素
println(list5.contains(9))
}
}