7、scala集合

目录

 

                                                    集合

​​​​​​1.序列List

2.集Set

​​​​​​​ 3.映射Map

1.构建映射

2.获取和修改映射中的值


 

                                                    集合

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 :  2list合并成一个新的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是一组相同类型的不能重复的值的列表

  1. 不可变的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)

例子:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值