Spark学习记录(二)

三、集合深化

3.1List

list数据处理方法:

  • filter :过滤元素
  • count :计算符合条件的元素个数
  • map :对元素操作
  • flatmap :压扁扁平,mapflat
    val site = "one" :: ("two" :: ("three" :: Nil))
 
    var filterList = site.filter(x => x.length() > 2)
    filterList.foreach(println)
 
    var count = site.count(x => x.length() > 2)
    println(count)
 
    var nameList = List(
      "Hello michong",
      "Hello 米虫",
      "Hello itekfly"
    )
 
    var splitList: List[Array[String]] = nameList.map { x => x.split(" ") }
    var flatMapList: List[String] = nameList.flatMap(x => x.split(" "))
    flatMapList.foreach(println)

可变长度List

import scala.collection.mutable.ListBuffer
object Main {
 
  def main(args: Array[String]): Unit = {
    var listBuffer = ListBuffer[Int](1, 2, 3, 4, 5)
    listBuffer.append(6, 7, 8, 9) // 追加元素
    listBuffer.+=(10)             // 在后面追加元素
    listBuffer.+=:(100)           // 在前面追加元素
    listBuffer.foreach(println)
  }
}

3.2Set

set是没有重复的对象集合,所有的元素都是唯一的

  • 1. 交集: intersect , &
  • 2. 差集: diff , &~
  • 3. 子集: subsetOf
  • 4. 最大: max
  • 5. 最小: min
  • 6. 转成数组: toList
  • 7. 转成字符串: mkString

3.3Map

map中元素的基本操作

    // 初始化map
    var map1: Map[String, Int] = Map(
      "one" -> 1,
      "two" -> 2
    )
 
    // 增加map的元素
    map1 += ("three" -> 3)
 
    // 删除map中的元素
    // map1.removed("three") // 方式1
    map1 -= ("three") // 方式2
 
    // 遍历方式1
    for (map <- map1) {
      println("key: ", map._1, "  value: ", map._2)
    }
 
    // 遍历方式2
    map1.foreach(f => {
      println("key:" + f._1 + " ,value:" + f._2)
    })
 
    // 合并map
    var map2: Map[String, Int] = Map(
      "four" -> 4,
      "five" -> 5
    )
    map1.++(map2).foreach(println)

Map处理数据的方法

  • filter :过滤,留下符合条件的记录
  • count :统计符合条件的记录数
  • contains map 中是否包含某个 key
  • exist :符合条件的记录存在与否
    println(map1.count(_._2.equals(1)))
    map2.filter(_._2.equals(5)).foreach(println)
    println(map2.contains("four"))
    println(map2.exists(_._1.equals("five")))

3.4、元组

和列表类似,但是元组可以将不同的元素包含在内。

    // 创建元组
    var tuple = (1, 2, 3, 4, "one")
    println(tuple._4)
 
    // 遍历元组
    var tupleIterator = tuple.productIterator
    while (tupleIterator.hasNext) {
      println(tupleIterator.next())
    }
 
    // 转换为字符串
    println(tuple.toString())

3.5Option

Option[T] 是一个类型为 T 的可选值的容器: 如果值存在, Option[T] 就是一个 Some[T] ,如果不存在, Option[T] 就是对象 None

   def main(args: Array[String]): Unit = {
    // 初始化map
    var map1: Map[String, Int] = Map(
      "one" -> 1,
      "two" -> 2
    )
 
    val value1: Option[Int] = map1.get("one")
    fun1(value1)
  }
 
  // 判断key是否存在
  def fun1(value: Option[Int]) = {
    if (!value.isEmpty) {
      println("key存在,value为:", value.getOrElse())
    } else {
      println("key不存在")
    }
  }
 
 
// 输出结果
(key存在,value为:,1)

四、偏函数

Scala中的Partia Function是一个Trait,其的类型为PartialFunction[A,B],其中接收一个类型为A的参数,返回一个类型为B的结果。

  1. 如果一个方法中没有 match 只有 case ,这个函数可以定义成 PartialFunction偏函数 。
  2. 偏函数定义时,不能使用括号传参,默认定义 PartialFunction 中传入一个值,匹配上了对应的case ,返回一个值,只能匹配同种类型。
  3. 一个 case 语句就可以理解为是一段匿名函数。
def main(args: Array[String]): Unit = {
  println(pf(1))
  println(pf(6))
  println(pf(true))
}
def pf: PartialFunction[AnyVal, String] = {
  case 1 => "One"
  case 2 => "Two"
  case 3 => "Three"
  case i: Int => "Int"
  case i: Double => "Int"
  case _ => "Other"
}
#笔记#
全部评论
感谢分享,收藏了
点赞 回复 分享
发布于 2022-08-12 16:18

相关推荐

我不行了,我真过不了第二关
码农索隆:嘿,哥们连界面都进去去,更别提玩了
点赞 评论 收藏
分享
真tmd的恶心,1.面试开始先说我讲简历讲得不好,要怎样讲怎样讲,先讲背景,再讲技术,然后再讲提升多少多少,一顿说教。2.接着讲项目,我先把背景讲完,开始讲重点,面试官立即打断说讲一下重点,无语。3.接着聊到了项目的对比学习的正样本采样,说我正样本采样是错的,我解释了十几分钟,还是说我错的,我在上一家实习用这个方法能work,并经过市场的检验,并且是顶会论文的复现,再怎么不对也不可能是错的。4.面试官,说都没说面试结束就退出会议,把面试者晾在会议里面,丝毫不尊重面试者难受的点:1.一开始是讲得不好是欣然接受的,毕竟是学习。2.我按照面试官的要求,先讲背景,再讲技术。当我讲完背景再讲技术的时候(甚至已经开始蹦出了几个技术名词),凭什么打断我说讲重点,是不能听出人家重点开始了?这也能理解,每个人都有犯错,我也没放心上。3.我自己做过的项目,我了解得肯定比他多,他这样贬低我做过的项目,说我的工作是错误的,作为一个技术人员,我是完全不能接受的,因此我就和他解释,但无论怎么解释都说我错。凭什么,作为面试官自己不了解相关技术,别人用这个方式work,凭什么还认为这个方法是错的,不接受面试者的解释。4.这个无可厚非,作为面试官,不打招呼就退出会议,把面试者晾着,本身就是有问题。综上所述,我现在不觉得第一第二点也是我的问题,面试官有很大的问题,就是专门恶心人的,总结面试官说教,不尊重面试者,打击面试者,不接受好的面试者,技术一般的守旧固执分子。有这种人部门有这种人怎么发展啊。最后去查了一下,岗位关闭了。也有可能是招到人了来恶心人的,但是也很cs
牛客20646354...:招黑奴啊,算法工程师一天200?
点赞 评论 收藏
分享
ResourceUt...:楼主有自己的垃圾箱,公司也有自己的人才库
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务