Scala 集合介绍

集合分类

Scala 集合分为两大类 可变(mutable) 和 不可变(immutable)

  • 不可变:数组声明好,数组的长度就不能再改变
  • 可变:数组声明好,可就改变数组的长度

三大集合

image

Seq 集合

有序 可重复

代表 List()

不可变的 List()

默认无需导入

创建

val list: List[Int] = List(1, 2, 3, 4)

修改内容

list.updated(1,11) //通过索引修改

查,遍历

// 查,取值
list(索引)

// 遍历
list.foreach(println)

for (l <- list){
    println(l)
}

可变 ListBuffer()

需要导入

创建集合

var listBuffer: ListBuffer[Int] = ListBuffer(1, 2, 3, 4)

增加元素

listBuffer.insert(1,11)  // 索引插入
listBuffer.append(1) // 加在最后

删除元素

listBuffer.remove(1)  // 通过索引删值
listBuffer.remove(1,2)  // 索引,几个
listBuffer.drop(2) // 从 索引0 开始删几个

修改元素

listBuffer.update(0,11) // 通过索引修改元素

查询,遍历元素

// 查询,取值
listBuffer(索引)
// 遍历
listBuffer.foreach(println)

for ( l <- listBuffer) {
    println(l)
}

特殊的 List() 集合

空集合

println(List()) // List()
println(Nil)  // List() 用处 1 :: 2 :: Nil

Set 集合

无序 不可重复

使用Set 集合需要记住,无序(就表示需要索引的操作不能用)

主要使用是生成新的集合,本身变化不大

创建 Set 集合

// 默认是不可变的
val set: Set[Int] = Set(1, 2, 1, 2, 3, 4)

// 可变 Set 集合
val mSet: mutable.Set[Int] = mutable.Set(1, 2, 3, 44, 5, 5, 5, 1, 2)

一些操作

// 添加 删除
var mSet1: mutable.Set[Int] = mSet + 11
println(mSet1.mkString(","))
var mSet2: mutable.Set[Int] = mSet - 1
println(mSet2.mkString(","))
---------------------------------------
1,2,3,5,11,44
2,3,5,44

Map 集合

无序,(k -> v),key 不能重复,value 可重复。

创建

// 创建不可变
val map: Map[String, Int] = Map("a" -> 1, "b" -> 2)
// 创建可变
val mMap: mutable.Map[String, Int] = mutable.Map("aa" -> 1, "bb" -> 2, "cc" -> 3)

增加

val map1: Map[String, Int] = map + ("c" -> 3)
println(map1.mkString(","))
-------------------------------------------
a -> 1,b -> 2,c -> 3

修改

val map2: Map[String, Any] = map.updated("a", "11")
println(map2.mkString(","))

// 可变Map 可以这样改
mMap("aa") = 11
println(mMap.mkString(","))

// 还可以通过 添加 覆盖的思想 修改
val map4: Map[String, Any] = map + ("a" -> "22")
println(map4.mkString(","))
---------------------------------------------------
a -> 11,b -> 2
aa -> 11,bb -> 2,cc -> 3
a -> 22,b -> 2

健取值

val i: Int = map("a")
println(i)
---------------------
1

删除

val map3: Map[String, Int] = map - "a"
println(map3.mkString(","))
--------------------------------------
b -> 2
上一篇
Scala 元组
发表评论 / Comment

用心评论~