小城天长网站建设,广东佛山建筑工程有限公司,网站图标做多大好,跨境电商卖什么产品最赚钱在之前的文章中#xff0c;我们学习了如何在scala中定义无参#xff0c;带参以及匿名函数。想了解的朋友可以查看这篇文章。同时#xff0c;希望我的文章能帮助到你#xff0c;如果觉得我的文章写的不错#xff0c;请留下你宝贵的点赞#xff0c;谢谢。
Spark-Scala语言…在之前的文章中我们学习了如何在scala中定义无参带参以及匿名函数。想了解的朋友可以查看这篇文章。同时希望我的文章能帮助到你如果觉得我的文章写的不错请留下你宝贵的点赞谢谢。
Spark-Scala语言实战3-CSDN博客文章浏览阅读654次点赞19次收藏14次。今天我会给大家带来如何在Scala中使用函数了解函数。望在本篇文章中大家有所收获。也欢迎朋友们到评论区下一起交流学习共同进步。https://blog.csdn.net/qq_49513817/article/details/136839079?spm1001.2014.3001.5501
目录
一、知识回顾
二、集合
1.List
a.字符串列表
b.整形
c.::Nil
2.set a.set创建
b.set操作
c.遍历set
3.map
三、元组
拓展-集合方法 1.List集合方法
2.set集合方法
3.map集合方法 一、知识回顾
在上一篇文章中我们讲了如和创建一个无参带参以及匿名函数。 无参并不难理解直接定义直接输出。 带参函数多注重调用方法 匿名函数就要花心思去理解了但多实操也肯定能搞懂。
那么开启今天的学习吧。
二、集合
scala中集合分为三大类: List、set以及Map
现在我们逐个讲解。
1.List
在Scala中List是一种常用的不可变集合。它代表了一个有序的元素集合你可以通过索引访问其元素并且其大小是固定的。由于它是不可变的所以一旦创建就不能改变其内容如添加或删除元素。
如果要定义可变列表需要导入 import scala.collection.mutable.ListBuffer 包
a.字符串列表 可以看到我定义了一个类型为List的字符串集合并赋给了他apples, oranges, pears三个字符串现在我们来运行以下我们的代码看看效果。 运行成功输出了我们赋予的东西。
package com.tipdm.scalaDemoobject p3 {def main(args: Array[String]): Unit {val p1: List[String] List(apples, oranges, pears)println(p1)}}
b.整形 和上面的区别不大仅仅改了赋予值的数据类型而已现在运行试试。 package com.tipdm.scalaDemoobject p3 {def main(args: Array[String]): Unit {val p1 List(11, 22, 33)println(p1)}}
c.::Nil
在scala中可以使用“Nil”和“::”操作符来定义列表 可以看到我们并没有定义p1的类型只是在数值后面加上了::Nil那输出会是什么呢 显而易见我放到这里那肯定是List那为什么会这样呢
Nil代表一个空的List它是List的结束标记。使用::操作符可以将元素添加到List的前面。 在之前的文章中我也说过了这也是Scala的语言的特点它会自己识别这正是Scala语言灵活的体现。
2.set a.set创建
在Scala中Set是一种不可变的集合它包含的元素是唯一的也就是说它不允许有重复的元素。Scala 使用不可变Set集合若想使用可变的Set集合则需要引入 scala.collection.mutable.Set包。 在运用scala.collection.mutable.Set包创建一个可变集合后重复元素会直接强制降重我们来看下输出。 可以看到p2原先的值应该是12233。现在输出直接变成123了它完成了一个降重工作。
b.set操作
你可以使用和-操作符来添加和删除元素 来看看输出。 对于不可变的Set添加或删除元素会返回一个新的Set而原始的Set不会被改变。对于可变的Set添加或删除元素会修改原来的Set。
c.遍历set
在Scala中我们可以使用foreach方法来遍历Set中的元素 输出看看 咱们的newp1被遍历输出了。
package com.tipdm.scalaDemoobject p4 {def main(args: Array[String]): Unit {val p1 Set(1, 2, 3, 4) val newp1 p1 5newp1.foreach(println)}
}3.map
在Scala中Map是一种可迭代的键值对(key/value)结构集合并且键在Map中是唯一的。
创建map输出map 那该怎么输出呢
可以通过键来访问Map中的值也可以直接打印还可以用for遍历输出 三种方法我们来看下输出效果 package com.tipdm.scalaDemoobject p4 {def main(args: Array[String]): Unit {val p1 Map(one - 1, two - 2, three - 3)val p2 p1(one)println(p2)println(p1)for ((key, value) - p1) {println(s$key - $value)}}
}三、元组
在Scala中元组Tuple是一种固定大小的有序集合可以包含不同类型的元素。元组是轻量级的用于将多个项组合成一个单一的对象而不必创建自定义的类。
val p1 (1, Hello)
这是两种元素的元组
val p2 (1, Hello, true, 3.14)
这是四种元素的元组
在元组中我们可以通过使用下划线 _1、_2、_3 等来访问元组中的元素其中数字表示元素的位置从1开始。也可以直接打印。 来看看运行效果 可以看到_1下的元素1被成功赋给了s1
package com.tipdm.scalaDemoobject p4 {def main(args: Array[String]): Unit {val p1 (1, Hello, true, 3.14)println(p1)val s1 p1._1println(s1)}}拓展-集合方法 1.List集合方法
方法名描述示例:::连接两个或多个列表val list1 List(1, 2, 3); val list2 List(4, 5, 6); val result list1 ::: list2: 或 ::在列表开头添加元素val list 1 :: (2 :: (3 :: Nil))isEmpty判断列表是否为空val list List(); val isEmpty list.isEmptyhead获取列表的第一个元素val list List(1, 2, 3); val firstElement list.headtail获取列表除第一个元素外的其余部分val list List(1, 2, 3); val rest list.tailtake(n)取出列表的前n个元素val list List(1, 2, 3, 4, 5); val taken list.take(3)takeRight(n)取出列表的后n个元素val list List(1, 2, 3, 4, 5); val takenRight list.takeRight(2)drop(n)删除列表的前n个元素val list List(1, 2, 3, 4, 5); val dropped list.drop(2)dropRight(n)删除列表的后n个元素val list List(1, 2, 3, 4, 5); val droppedRight list.dropRight(2)filter(predicate)过滤出符合条件的元素val list List(1, 2, 3, 4, 5); val filtered list.filter(_ % 2 0)indexOf(element, [from])从指定位置开始查找元素的索引val list List(1, 2, 3, 4, 5); val index list.indexOf(3)intersect(other)计算两个集合的交集val list1 List(1, 2, 3); val list2 List(2, 3, 4); val intersection list1.intersect(list2)length返回列表的长度val list List(1, 2, 3, 4, 5); val length list.lengthmkString([sep])将列表元素转换为字符串可以用指定的分隔符val list List(1, 2, 3); val str list.mkString(, )toArray将列表转换为数组val list List(1, 2, 3); val array list.toArraysorted对列表进行排序默认为升序val list List(3, 1, 4, 1, 5, 9); val sortedList list.sorted
2.set集合方法
方法名描述示例 或 向集合中添加元素val set Set(1, 2, 3); set 4- 或 --从集合中移除元素val set Set(1, 2, 3, 4); set - 3contains检查集合是否包含某元素val set Set(1, 2, 3); val isContained set.contains(2)isEmpty判断集合是否为空val set Set(); val isEmpty set.isEmptysize返回集合的元素数量val set Set(1, 2, 3); val size set.sizeintersect计算两个集合的交集val set1 Set(1, 2, 3); val set2 Set(2, 3, 4); val intersection set1.intersect(set2)diff 或 --计算两个集合的差集val set1 Set(1, 2, 3); val set2 Set(2, 3, 4); val diff set1.diff(set2)union 或 计算两个集合的并集val set1 Set(1, 2, 3); val set2 Set(2, 3, 4); val union set1.union(set2)subsetOf判断一个集合是否为另一个集合的子集val set1 Set(1, 2); val set2 Set(1, 2, 3); val isSubset set1.subsetOf(set2)filter过滤出符合条件的元素val set Set(1, 2, 3, 4, 5); val filtered set.filter(_ % 2 0)foreach遍历集合中的每个元素并执行操作val set Set(1, 2, 3); set.foreach(println)mkString将集合元素转换为字符串可用指定的分隔符val set Set(1, 2, 3); val str set.mkString(, )
3.map集合方法
方法名描述示例 或 向Map中添加键值对val map Map(a - 1); map (b - 2)- 或 --从Map中移除键值对val map Map(a - 1, b - 2); map - aget根据键获取对应的值返回Option类型val map Map(a - 1); val value map.get(a)contains检查Map是否包含某个键val map Map(a - 1); val isContained map.contains(a)isEmpty判断Map是否为空val map Map(); val isEmpty map.isEmptysize返回Map中的键值对数量val map Map(a - 1, b - 2); val size map.sizekeys获取Map中所有的键val map Map(a - 1, b - 2); val keys map.keysvalues获取Map中所有的值val map Map(a - 1, b - 2); val values map.valuesforeach遍历Map中的每个键值对并执行操作val map Map(a - 1, b - 2); map.foreach { case (key, value) println(s$key - $value) }mapValues对Map中的每个值应用函数返回新的Mapval map Map(a - 1, b - 2); val newMap map.mapValues(_ * 2)filterKeys根据键的条件过滤Map中的键值对val map Map(a - 1, b - 2); val filtered map.filterKeys(_ a)filter 或 withFilter根据键值对的条件过滤Map中的键值对val map Map(a - 1, b - 2); val filtered map.filter { case (key, value) value 1 }