精华内容
下载资源
问答
  • scala

    千次阅读 2020-08-24 20:25:29
    scala> val a = List(1,2,3,4)a: List[Int] = List(1, 2, 3, 4) ​scala> println(a.toString)List(1, 2, 3, 4) 生成字符串 mkString方法,可以将元素以分隔符拼接起来。默认没有分隔符 参考代码 ...

    转换字符串

    toString方法可以返回List中的所有元素

    参考代码

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

    scala> println(a.toString)
    List(1, 2, 3, 4)

    生成字符串

    mkString方法,可以将元素以分隔符拼接起来。默认没有分隔符

    参考代码

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

    scala> a.mkString
    res7: String = 1234

    scala> a.mkString(":")
    res8: String = 1:2:3:4

    并集

    union表示对两个列表取并集,不去重

    参考代码

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

    scala> val a2 = List(3,4,5,6)
    a2: List[Int] = List(3, 4, 5, 6)

    // 并集操作
    scala> a1.union(a2)
    res17: List[Int] = List(1, 2, 3, 4, 3, 4, 5, 6)

    // 可以调用distinct去重
    scala> a1.union(a2).distinct
    res18: List[Int] = List(1, 2, 3, 4, 5, 6)

    交集

    intersect表示对两个列表取交集

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

    scala> val a2 = List(3,4,5,6)
    a2: List[Int] = List(3, 4, 5, 6)

    scala> a1.intersect(a2)
    res19: List[Int] = List(3, 4)

    差集

    diff表示对两个列表取差集,例如: a1.diff(a2),表示获取a1在a2中不存在的元素

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

    scala> val a2 = List(3,4,5,6)
    a2: List[Int] = List(3, 4, 5, 6)

    scala> a1.diff(a2)
    res24: List[Int] = List(1, 2)

    Set

    Set()是代表没有重复元素的集合。Set具备以下性质:

    1. 元素不重复
    2. 不保证插入顺序

    scala中的集也分为两种,一种是不可变集,另一种是可变集。

    不可变集

    语法

    创建一个空的不可变集,语法格式:

    val/var 变量名 = Set[类型]()

    给定元素来创建一个不可变集,语法格式:

    val/var 变量名 = Set(元素1, 元素2, 元素3...)

    示例一

    定义一个空的不可变集

    参考代码

    scala> val a = Set[Int]()
    a: scala.collection.immutable.Set[Int] = Set()

    示例二

    定义一个不可变集,保存以下元素:1,1,1,1,1,3,2,4,8

    参考代码

    scala> val a = Set(1,1,1,1,1,3,2,4,8)
    a: scala.collection.immutable.Set[Int] = Set(1, 2, 3, 8, 4)

    基本操作

    1. 获取集的大小(size
    2. 遍历集(和遍历数组一致
    3. 添加一个元素,生成一个Set+
    4. 拼接两个集,生成一个Set++
    5. 拼接集和列表,生成一个Set++

    示例


    参考代码

    // 创建集
    scala> val a = Set(1,1,2,3,4,5)
    a: scala.collection.immutable.Set[Int] = Set(5, 1, 2, 3, 4)

    // 获取集的大小
    scala> a.size
    res0: Int = 5

    // 遍历集
    scala> for(i <- a) println(i)

    // 删除一个元素
    scala> a - 1
    res5: scala.collection.immutable.Set[Int] = Set(5, 2, 3, 4)

    // 拼接两个集
    scala> a ++ Set(6,7,8)
    res2: scala.collection.immutable.Set[Int] = Set(5, 1, 6, 2, 7, 3, 8, 4)

    // 拼接集和列表
    scala> a ++ List(6,7,8,9)
    res6: scala.collection.immutable.Set[Int] = Set(5, 1, 6, 9, 2, 7, 3, 8, 4)

    可变集

    定义

    可变集合不可变集的创建方式一致,只不过需要提前导入一个可变集类。

    手动导入:import scala.collection.mutable.Set

    参考代码

    scala> val a = Set(1,2,3,4)
    a: scala.collection.mutable.Set[Int] = Set(1, 2, 3, 4)                          

    // 添加元素
    scala> a += 5
    res25: a.type = Set(1, 5, 2, 3, 4)

    // 删除元素s
    scala> a -= 1
    res26: a.type = Set(5, 2, 3, 4)

    映射

    Map可以称之为映射。它是由键值对组成的集合。在scala中,Map也分为不可变Map和可变Map。

    不可变Map

    语法

    val/var map = Map(->, ->, ->...) // 推荐,可读性更好
    val/var map = Map((, ), (, ), (, ), (, )...)

    参考代码

    scala> val map = Map("zhangsan"->30, "lisi"->40)
    map: scala.collection.immutable.Map[String,Int] = Map(zhangsan -> 30, lisi -> 40)

    scala> val map = Map(("zhangsan", 30), ("lisi", 30))
    map: scala.collection.immutable.Map[String,Int] = Map(zhangsan -> 30, lisi -> 30)

    // 根据key获取value
    scala> map("zhangsan")
    res10: Int = 30

    修改

    scala> map("zhangsan")=33

    <console>:11: error: value update is not a member of scala.collection.immutable.Map[String,Int]

                  map("zhangsan")=33

    可变Map

    定义

    定义语法与不可变Map一致。但定义可变Map需要手动导入import scala.collection.mutable.Map

    scala> val map = Map("zhangsan"->30, "lisi"->40)
    map: scala.collection.mutable.Map[String,Int] = Map(lisi -> 40, zhangsan -> 30)

    // 修改value
    scala> map("zhangsan") = 20

    Map基本操作

    基本操作

    1. 获取值(map(key))
    2. 获取所有keymap.keys
    3. 获取所有valuemap.values
    4. 遍历map集合
    5. getOrElse
    6. 增加key,value
    7. 删除key

    示例

    参考代码

    scala> val map = Map("zhangsan"->30, "lisi"->40)
    map: scala.collection.mutable.Map[String,Int] = Map(lisi -> 40, zhangsan -> 30)

    // 获取zhagnsan的年龄
    scala> map("zhangsan")
    res10: Int = 30

    // 获取所有的学生姓名
    scala> map.keys
    res13: Iterable[String] = Set(lisi, zhangsan)

    // 获取所有的学生年龄
    scala> map.values
    res14: Iterable[Int] = HashMap(40, 30)

    // 打印所有的学生姓名和年龄
    scala> for((x,y) <- map) println(s"$x $y")
    lisi 40
    zhangsan 30

    // 获取wangwu的年龄,如果wangwu不存在,则返回-1
    scala> map.getOrElse("wangwu", -1)
    res17: Int = -1

    // 新增一个学生:wangwu, 35
    scala> map += "wangwu"->35
    res22: scala.collection.mutable.Map[String,Int] = Map(lisi -> 40, zhangsan -> 30, wangwu -> 35)

    // lisi从可变映射中移除
    scala> map -= "lisi"
    res23: scala.collection.mutable.Map[String,Int] = Map(zhangsan -> 30)

    iterator迭代器

    scala针对每一类集合都提供了一个迭代器(iterator)用来迭代访问集合

    使用迭代器遍历集合

    1. 使用iterator方法可以从集合获取一个迭代器
    2. 迭代器的两个基本操作
      1. hasNext——查询容器中是否有下一个元素
      2. next——返回迭代器的下一个元素,如果没有,抛出NoSuchElementException
    3. 每一个迭代器都是有状态的
    4. 迭代完后保留在最后一个元素的位置
    5. 再次使用则抛出NoSuchElementException
    6. 可以使用while或者for来逐个返回元素

    示例

    1. 定义一个列表,包含以下元素:1,2,3,4,5
    2. 使用while循环和迭代器,遍历打印该列表

    参考代码

    scala> var a=List(1,2,3,4,5)

    a: List[Int] = List(1, 2, 3, 4, 5)

     

    scala> val ite = a.iterator
    ite: Iterator[Int] = non-empty iterator

    scala> while(ite.hasNext){

    println(ite.next)

    }

    示例

    1. 定义一个列表,包含以下元素:1,2,3,4,5
    2. 使用for 表达式和迭代器,遍历打印该列表

    参考代码

    scala> val a = List(1,2,3,4,5)
    a: List[Int] = List(1, 2, 3, 4, 5)

    scala> for(i <- a) println(i)

     

    展开全文
  • import scala.collection.mutable val q1 = new mutable.Queue[Int] println(q1)

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 286,535
精华内容 114,614
关键字:

scala