Scala——三个容器:List Set Map

本文详细介绍了Scala中的三种基本容器:列表(List)、集(Set)和映射(Map)。针对每种容器,文章分别展示了其常用操作,如列表的头部和尾部获取、集合的创建和元素添加、映射的键值对操作等,并提供了示例代码。此外,还讲解了如何循环遍历映射并利用printf进行格式化输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

列表(List)

intList定义一个列表,intList.head返回列表头部,也就是第一个值,而intList.tail返回的是列表的尾部但返回值仍是一个列表
例如:

scala> val intList = List(1,2,3,4,5,6,7,8)
intList: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8)

scala> intList.head
res17: Int = 1

scala> intList.tail
res18: List[Int] = List(2, 3, 4, 5, 6, 7, 8)


列表的头部增加新的元素`运用 ::

scala> val intListOther = 0::intList
intListOther: List[Int] = List(0, 1, 2, 3, 4, 5, 6, 7, 8)

Nil表示空列表

scala> val intList = 1::2::3::Nil
intList: List[Int] = List(1, 2, 3)

利用 ::连接两个列表

scala> val intList = 1::2::3::Nil
intList: List[Int] = List(1, 2, 3)

scala> val intList1 = List(1,2)
intList1: List[Int] = List(1, 2)

scala> val intList2 = List(3,4)
intList2: List[Int] = List(3, 4)

scala> val intList3 = intList1:::intList2
intList3: List[Int] = List(1, 2, 3, 4)

利用intList.sum函数求和

scala> val b=List(3,4)
b: List[Int] = List(3, 4)

scala> b.sum
res4: Int = 7

集(set)

创建一个集合

scala> var mySet=Set("wuhan","yangtuo")
mySet: scala.collection.immutable.Set[String] = Set(wuhan, yangtuo)

向集合中添加元素

scala> mySet +="laosi"

scala> mySet
res6: scala.collection.immutable.Set[String] = Set(wuhan, yangtuo, laosi)

如果想在不可变val数据集中添加元素时是会出现报错的,所以需要声明为var,这时候我们需要调用 import scala.collection.mutable.Set包

例如:
向不可变数据集val中添加元素时是会出现报错

scala> val mySet=Set("wuhan","yangtuo")
mySet: scala.collection.immutable.Set[String] = Set(wuhan, yangtuo)

scala> mySet +="laosi"
<console>:20: error: value += is not a member of scala.collection.immutable.Set[String]
       mySet +="laosi"
             ^

所以要声明为var才能添加进去

scala> import scala.collection.mutable.Set
import scala.collection.mutable.Set

scala> val mySet=Set("wuhan","yangtuo")
mySet: scala.collection.mutable.Set[String] = Set(wuhan, yangtuo)

scala> mySet +="laosi"
res11: mySet.type = Set(wuhan, laosi, yangtuo)

虽然可变集和不可变集都有添加或删除元素的操作,但是,二者有很大的区别。对不可变集进行操作,会产生一个新的集,原来的集并不会发生变化。 而对可变集进行操作,改变的是该集本身。

映射(Map)

映射(Map)是一系列键值对的集合,所有的值,都可以通过键来获取。

创建一个不可变映射
例如:

scala> val dashuju = Map("a" -> "wuhan", "b" -> "yangtuo","c"->"laosi")
dashuju: scala.collection.immutable.Map[String,String] = Map(a -> wuhan, b -> yangtuo, c -> laosi)

获取映射中的值

scala> println(dashuju("a"))
wuhan

使用contains方法查看映射中是否存在某个键

scala> val a=if(dashuju.contains("a")) dashuju("a") else 0
a: Any = wuhan

scala> val a=if(dashuju.contains("d")) dashuju("d") else 0
a: Any = 0

向不可变val映射中添加元素时是会出现报错,所以要声明为var才能添加进去

scala> import scala.collection.mutable.Map
import scala.collection.mutable.Map
scala> val dashuju = Map("a" -> "wuhan", "b" -> "yangtuo","c"->"laosi")
dashuju: scala.collection.mutable.Map[String,String] = Map(b -> yangtuo, a -> wuhan, c -> laosi)

scala> dashuju("d")="songjiahui"

也可以使用+=操作来添加新的元素

scala> dashuju +=("e"->"xinxin")
res1: dashuju.type = Map(e -> xinxin, b -> yangtuo, a -> wuhan, c -> laosi)

循环遍历映射

格式:for ((k,v) <- 映射) 语句块

利用printf 格式化循环输出

%d 十进制数字
%s 字符串
%c 字符
%e 指数浮点数
%f 浮点数
%i 整数(十进制)
%o 八进制
%u 无符号十进制
%x 十六进制
%% 打印%
% 打印%

例如:
\n表示换行

scala> for((k,v)<-dashuju)printf("xuehao: %s ximing: %s\n",k,v)
xuehao: e ximing: xinxin
xuehao: b ximing: yangtuo
xuehao: a ximing: wuhan
xuehao: c ximing: laosi

打印所有的键keys

scala> for((k,v)<-dashuju)printf("xuehao: %s ximing: %s\n",k,v)
xuehao: e ximing: xinxin
xuehao: b ximing: yangtuo
xuehao: a ximing: wuhan
xuehao: c ximing: laosi

scala> for(k<-dashuju.keys)println(k)
e
b
a
c

打印所有的值values

scala> for(k<-dashuju.values)println(k)
xinxin
yangtuo
wuhan
laosi

列表的遍历

for进行遍历:

val list = List(1, 2, 3, 4, 5)
for (elem <- list) println(elem)

foreach进行遍历:

val list = List(1, 2, 3, 4, 5)
list.foreach(elem => println(elem)) //可简写为list.foreach(println),或list foreach println
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值