目录
集合
Scala的集合有三大类:序列List、集Set、映射Map,所有的集合都扩展自Iterable特质
在Scala中集合有可变(来自mutable包)和不可变(来自immutable包)两种类型,immutable类型的集合初始化后就不能改变了,对immutable类型的集合的操作会生成新的集合。而mutable类型的集合可以在原集合上进行操作,可见,java里的集合对应的是mutable类型的集合
1.序列List
1.不可变的序列 import scala.collection.immutable._
在Scala中列表有2种情况,要么为空(Nil表示空列表),要么是一个head元素加上一个tail列表。9 :: List(5, 2) :: 操作符是将给定的头和尾创建一个新的列表。注意::: 操作符是右结合的,如9 :: 5 :: 2 :: Nil相当于 9 :: (5 :: (2 :: Nil))
操作符:
0::list 0+:list: 0插入到list的前面生成一个新的List
list :+0 : 将一个元素0添加到lst1的后面产生一个新的集合
lst1 ++ lst0 : 2个list合并成一个新的List
lst1 ++: lst0 : 将lst1插入到lst0前面生成一个新的集合
package cn.itcast.collect
object ImmutListDemo {
def main(args: Array[String]) {
//创建一个不可变的集合
val lst1 = List(1,2,3)
//将0插入到lst1的前面生成一个新的List
val lst2 = 0 :: lst1
val lst3 = lst1.::(0)
val lst4 = 0 +: lst1
val lst5 = lst1.+:(0)
//将一个元素添加到lst1的后面产生一个新的集合
val lst6 = lst1 :+ 3
val lst0 = List(4,5,6)
//将2个list合并成一个新的List
val lst7 = lst1 ++ lst0
//将lst1插入到lst0前面生成一个新的集合
val lst8 = lst1 ++: lst0
//将lst0插入到lst1前面生成一个新的集合
val lst9 = lst1.:::(lst0)
println(lst9)
}
} |
2.可变的序列 ListBuffer[]
追加元素: list=+ 4 list.append(4)
合并序列,没有生成新集合: lst0 ++= lst1
合并序列,生成了新集合: lst0 ++ lst1
package cn.itcast.collect
import scala.collection.mutable.ListBuffer
object MutListDemo extends App{
//构建一个可变列表,初始有3个元素1,2,3
val lst0 = ListBuffer[Int](1,2,3)
//创建一个空的可变列表
val lst1 = new ListBuffer[Int]
//向lst1中追加元素,注意:没有生成新的集合
lst1 += 4
lst1.append(5)
//将lst1中的元素最近到lst0中, 注意:没有生成新的集合
lst0 ++= lst1
//将lst0和lst1合并成一个新的ListBuffer 注意:生成了一个集合
val lst2= lst0 ++ lst1
//将元素追加到lst0的后面生成一个新的集合
val lst3 = lst0 :+ 5
} |
2.集Set
Set是一组相同类型的不能重复的值的列表
- 不可变的Set
添加一个元素生成新set : set1 + 4
合并2个set: set1 ++ Set(5, 6, 7)
package cn.itcast.collect
import scala.collection.immutable.HashSet
object ImmutSetDemo extends App{
val set1 = new HashSet[Int]()
//将元素和set1合并生成一个新的set,原有set不变
val set2 = set1 + 4
//set中元素不能重复
val set3 = set1 ++ Set(5, 6, 7)
val set0 = Set(1,3,4) ++ set1
println(set0.getClass)
} |
2.可变的Set
向HashSet中添加元素: set1.add(4) set1 += 4
删除一个元素 : set1.remove(2) set1 -= 5
package cn.itcast.collect
import scala.collection.mutable
object MutSetDemo extends App{
//创建一个可变的HashSet
val set1 = new mutable.HashSet[Int]()
//向HashSet中添加元素
set1 += 2
//add等价于+=
set1.add(4)
set1 ++= Set(1,3,5)
println(set1)
//删除一个元素
set1 -= 5
set1.remove(2)
println(set1)
} |
3.映射Map
映射Map也有可变和不可变类型之分,常用其子类HashMap,创建的形式大概相同,不同的是还是如同前面所说,不可变的map不可以修改初始化后的值。
package cn.itcast.collect
import scala.collection.mutable
object MutMapDemo extends App{
val map1 = new mutable.HashMap[String, Int]()
//向map中添加数据
map1("spark") = 1
map1 += (("hadoop", 2))
map1.put("storm", 3)
println(map1)
//从map中移除元素
map1 -= "spark"
map1.remove("hadoop")
println(map1)
} |
在Scala中,把哈希表这种数据结构叫做映射
1.构建映射
1.用箭头表示 Map(“tom”->66)
2.用元组创建 Map((“tom”,66))
3.可变类型的map 可以先声明类型再添加值
Val map =Map[String,Int] map.put(“tom”,66)

2.获取和修改映射中的值
获取值 : val score = map(“tom”) map .get(“tom“) map.getOrElse(“tom”,0)获取 如果没有就返回默认值


修改值,只针对可变类型的:
map(“tom”) = 100 //修改key为tom的值为100
map.update(“tom”,100)
map + =(“tom”,100)
例子:

本文深入解析Scala中的三种核心集合类型:序列List、集Set和映射Map。探讨了它们的不可变与可变特性,以及在Scala中如何进行构建、操作和使用这些集合,包括列表的创建、元素的添加和删除、集合的合并等关键操作。
419

被折叠的 条评论
为什么被折叠?



