• 可变和不可变的集合
Scala同时支持可变的和不可变的集合,不可变的集合从不改变,因此不可变集合是线程安全的集合,例如有:scala.collection.mutable.Map,也有scala.collection.immutable.Map。它们有一个共有的超类型scala.collection.Map
Scala优先采用不可变集合。scala.collection包中的伴生对象产出不可变的集合例如:scala.collection.Map("hello" -> 42)是一个不可变的映射
  • 添加元素和移除元素的操作符
  def main(args: Array[String]): Unit = {
// 初始化构建元素个数为4的集合对象
val v = Vector(1, 2, 3, 4)
// 添加集合后添加5(新建集合添加5)
println(v :+ 5)
// 集合前添加0(新建集合添加0)
println(5 +: v)
// 初始化构建高效数组缓存
val array = ArrayBuffer(1, 2, 3, 4)
// 添加元素5
println(array += 5)
// 删除元素1
println(array -= 1)
// 初始化Set集合对象
val number = Set(1, 2, 3)
// 添加4元素(新建set集合添加4)
println(number + 4)
// 添加4元素(新建set集合移除3)
println(number - 3)
// 使用++添加多个set元素(结果为无序的)
println(number ++ Set(4, 5, 6))
}
}
可以使用++一次添加多个元素,也可以使用--一次删除多个元素
  • 将函数映射到集合

    有时候可以对元素进行变换,map方法可以将某个函数应用到集合每个元素并进行相应的元素处理
    // 初始化创建List集合映射map
val name = List("Bob", "Michael", "Marry")
println(name.map(_.toUpperCase))
val result = for (n <- name) yield n.toUpperCase
println(result)
// 拼接字符串
def unclase(string: String) = Vector(string.toLowerCase(), string.toUpperCase())
println(name.flatMap(unclase))
  • 与java集合相互转换
import scala.collection.JavaConversions._
需要手动导入,在项目中发现不手动导入这个,idea编辑器编译器会报错

常见转换api

asjavaEnumerationEnumeration
setAsJavaSetSet
mapAsJavaMapMap
bufferAsJavaListList
04-14 05:40