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

    2019-11-21 21:51:59
    Scala 安装(win) scala 基础 Scala 隐式转换 Scala 字符串 Scala Array scala List scala set scala map Scala match Scala Case Scala Abs scala trait Scala paralle Scala class Scala Object scala 集合 Scala ...
    展开全文
  • 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)

     

    展开全文
  • 大数据—Scala

    千人学习 2019-03-01 10:45:40
    近年来随着大数据的兴起,大数据核心框架Spark和Kafka也受到到广泛关注, Spark底层是Scala实现的, 因此也带火了Scala语言,目前Scala被全球知名公司(如:谷歌、百度、阿里、Twitter、京东等)广泛用于Spark开发。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 98,765
精华内容 39,506
关键字:

scala