scala List
方法 | 描述 |
---|---|
def +(elem: A): List[A] | 前置一个元素列表 |
def ::(x: A): List[A] | 在这个列表的开头添加的元素。 |
def :::(prefix: List[A]): List[A] | 增加了一个给定列表中该列表前面的元素。 |
def ::(x: A): List[A] | 增加了一个元素x在列表的开头 |
def addString(b: StringBuilder): StringBuilder | 追加列表的一个字符串生成器的所有元素。 |
def addString(b: StringBuilder, sep: String): StringBuilder | 追加列表的使用分隔字符串一个字符串生成器的所有元素。 |
def apply(n: Int): A | 选择通过其在列表中索引的元素 |
def contains(elem: Any): Boolean | 测试该列表中是否包含一个给定值作为元素。 |
def copyToArray(xs: Array[A], start: Int, len: Int): Unit | 列表的副本元件阵列。填充给定的数组xs与此列表中最多len个元素,在位置开始。 |
def distinct: List[A] | 建立从列表中没有任何重复的元素的新列表。 |
def drop(n: Int): List[A] | 返回除了第n个的所有元素。 |
def dropRight(n: Int): List[A] | 返回除了最后的n个的元素 |
def dropWhile(p: (A) => Boolean): List[A] | 丢弃满足谓词的元素最长前缀。 |
def endsWith[B](that: Seq[B]): Boolean | 测试列表是否使用给定序列结束。 |
def equals(that: Any): Boolean | equals方法的任意序列。比较该序列到某些其他对象。 |
def exists(p: (A) => Boolean): Boolean | 测试谓词是否持有一些列表的元素。 |
def filter(p: (A) => Boolean): List[A] | 返回列表满足谓词的所有元素。 |
def forall(p: (A) => Boolean): Boolean | 测试谓词是否持有该列表中的所有元素。 |
def foreach(f: (A) => Unit): Unit | 应用一个函数f以列表的所有元素。 |
def head: A | 选择列表的第一个元素 |
def indexOf(elem: A, from: Int): Int | 经过或在某些起始索引查找列表中的一些值第一次出现的索引。 |
def init: List[A] | 返回除了最后的所有元素 |
def intersect(that: Seq[A]): List[A] | 计算列表和另一序列之间的多重集交集。 |
def isEmpty: Boolean | 测试列表是否为空 |
def iterator: Iterator[A] | 创建一个新的迭代器中包含的可迭代对象中的所有元素 |
def last: A | 返回最后一个元素 |
def lastIndexOf(elem: A, end: Int): Int | 之前或在一个给定的最终指数查找的列表中的一些值最后一次出现的索引 |
def length: Int | 返回列表的长度 |
def map[B](f: (A) => B): List[B] | 通过应用函数以g这个列表中的所有元素构建一个新的集合 |
def max: A | 查找最大的元素 |
def min: A | 查找最小元素 |
def mkString: String | 显示列表的字符串中的所有元素 |
def mkString(sep: String): String | 显示的列表中的字符串中使用分隔串的所有元素 |
def reverse: List[A] | 返回新列表,在相反的顺序元素 |
def sorted[B >: A]: List[A] | 根据排序对列表进行排序 |
def startsWith[B](that: Seq[B], offset: Int): Boolean | 测试该列表中是否包含给定的索引处的给定的序列 |
def sum: A | 概括这个集合的元素 |
def tail: List[A] | 返回除了第一的所有元素 |
def take(n: Int): List[A] | 返回前n个元素 |
def takeRight(n: Int): List[A] | 返回最后n个元素 |
def toArray: Array[A] | 列表以一个数组变换 |
def toBuffer[B >: A]: Buffer[B] | 列表以一个可变缓冲器转换 |
def toMap[T, U]: Map[T, U] | 此列表的映射转换 |
def toSeq: Seq[A] | 列表的序列转换 |
def toSet[B >: A]: Set[B] | 列表到集合变换 |
def toString(): String | 列表转换为字符串 |
参考:
https://www.cnblogs.com/huiandong/articles/9278213.html
scala列表用Nil
表示空
::
操作符是将给定的头和尾创建一个新列表
list.
可以查看list所有的方法
9 :: List(1,2) //List[Int] = List(9, 1, 2)
val lst = List(1,2,3)
lst.head//res1: Int = 1 取第一个元素
lst.tail // res2: List[Int] = List(2, 3) 取剩余的元素(除第一个元素)
添加元素
//左侧添加元素和添加列表里的元素
0 :: lst //List[Int] = List(0, 1, 2, 3) 头部append元素
List(0) :: lst // List[Any] = List(List(0), 1, 2, 3) 头部append 函数
List(0) ::: lst // List[Int] = List(0, 1, 2, 3) 将列表拆分添加//右侧添加元素和添加列表里的元素
lst :+ 0 // List[Int] = List(1, 2, 3, 0) 将0添加到列表之后
lst :+ List(0) // List[Any] = List(1, 2, 3, List(0))
lst ++ List(0) // List[Int] = List(1, 2, 3, 0) 将列表拆分并在后面追加
元素操作
map
final def map[B](f: (A) => B): List[B]
相当于python中的map函数,不过在python中不是list对象的方法,而是一个内置函数
val array = Array[Int](1,2,3,4,5)
val y = array.map(x => x*2) //完全体:val y = array map((x: Int) => x*2) ,这里的`=>`相当于python中lambda中的:
val y = array.map(_ * 2)//`_`表示数组中的每个值,简化的写法,只写右侧的结果
foreach
区别于map,foreach没有返回值
val res = List(1,2,3)
res.foreach(println)
filter
def filter(p: ((String, Int)) => Boolean): List[(String, Int)]
val lst = List(("a",3),("b",1),("c",2))
lst.filter(x=>x._2>1) // List[(String, Int)] = List((a,3), (c,2)) 过滤元素第二个位置大于1的
lst.filter(_._2>1) //和上面是等价的
flatten|faltMap
final defflatMap[B](f: (A) => IterableOnce[B]): List[B]
defflatten[B](implicit toIterableOnce: (A) => IterableOnce[B]): List[B]
//flatten|faltMap|foreach
val words = Array("hello tom hello","aa bb")
val splitWords: Array[Array[String]] = words.map(wd => wd.split(" "))//按空格切分字符串,现在是两层嵌套数组
val flattenWords = splitWords.flatten // 将内层的列表去掉
val res = Array[String] = words.flatMap(wd => wd.split(" ")) //flatMap是map和Flatten的结合
列表操作
sorted/sortBy/sortWith
sorted 是直接按升序排def sorted[B >: (String, Int)](implicit ord: scala.math.Ordering[B]): List[(String, Int)]
lst.sorted //List[(String, Int)] = List((a,3), (b,1), (c,2))
sortBy 根据具体元素指定排序方式 def sortBy[B](f: ((String, Int)) => B)(implicit ord: scala.math.Ordering[B]): List[(String, Int)]
lst.sortBy(x=>x._2) //List[(String, Int)] = List((b,1), (c,2), (a,3)) 按元素第2个位置的升序排列
lst.sortBy(x=> - x._2) //List[(String, Int)] = List((a,3), (c,2), (b,1)) 按元素的第2个位置降序排列
sortWith
sortWith 传入比较器(x y)分别代表了前后相连的元素def sortWith(lt: ((String, Int), (String, Int)) => Boolean): List[(String, Int)]
lst.sortWith((x,y) => x._2 > y._2) //List[(String, Int)] = List((a,3), (b,1), (c,2))
聚合
reduce和aggregate都是调用的fold
reduce/reduceLeft/reduceRight
传入函数,进行reduce def reduce[A1 >: Int](op: (A1, A1) => A1): A1
lst.reduce((x,y)=>x+y)
aggregate(reduceByKey spark
)
defaggregate[B](z: => B)(seqop: (B, A) => B, combop: (B, B) => B): B
val lst = List(1,2,3)
lst.aggregate(0)(_+_,_+_)
fold/foldLeft/foldRight
val lst = List(1,2,3)
lst.fold(0)(_ - _) //Int = -6 从左边减(放在减号左边) ((0-1)-2)-3
lst.foldLeft(0)(_ - _) // 和fold等价
lst.foldRight(0)(_ - _) //Int = 2 从右边减(放在减号右边) (1-(2-(3-0)))
val lst = List(("a",3),("b",1),("c",2))
count
def count(p: ((String, Int)) => Boolean): Int
参数是代表x,代表的是列表中的每一个值
val lst = List(("a",3),("b",1),("c",2))
lst.count(x=>x._2>1) # 计算元素中第二个位置大于1的个数
union
将两个list和成一个
intersect
交集
diff
差集
zip
mkString
slice
参考文献:
https://www.scala-lang.org/api/current/scala/collection/immutable/List.html
scala List相关推荐
- hadoop,spark,scala,flink 大数据分布式系统汇总
20220314 https://shimo.im/docs/YcPW8YY3T6dT86dV/read 尚硅谷大数据文档资料 iceberg相当于对hive的读写,starrocks相当于对mysq ...
- 2021年大数据常用语言Scala(三十八):scala高级用法 隐式转换和隐式参数
目录 隐式转换和隐式参数 隐式转换 自动导入隐式转换方法 隐式转换的时机 隐式参数 隐式转换和隐式参数 隐式转换和隐式参数是scala非常有特色的功能,也是Java等其他编程语言没有的功能.我们可以很 ...
- 2021年大数据常用语言Scala(三十七):scala高级用法 高阶函数用法
目录 高阶函数用法 作为值的函数 匿名函数 柯里化(多参数列表) 闭包 高阶函数用法 Scala 混合了面向对象和函数式的特性,在函数式编程语言中,函数是"头等公民",它和Int. ...
- 2021年大数据常用语言Scala(三十六):scala高级用法 泛型
目录 泛型 定义一个泛型方法 定义一个泛型类 上下界 协变.逆变.非变 非变 协变 逆变 泛型 scala和Java一样,类和特质.方法都可以支持泛型.我们在学习集合的时候,一般都会涉及到泛型. sc ...
- 2021年大数据常用语言Scala(三十五):scala高级用法 提取器(Extractor)
目录 提取器(Extractor) 定义提取器 提取器(Extractor) 我们之前已经使用过scala中非常强大的模式匹配功能了,通过模式匹配,我们可以快速匹配样例类中的成员变量.例如: // ...
- 2021年大数据常用语言Scala(三十四):scala高级用法 异常处理
目录 异常处理 捕获异常 抛出异常 异常处理 Scala中 无需在方法上声明异常 来看看下面一段代码. def main(args: Array[String]): Unit = {val i = 1 ...
- 2021年大数据常用语言Scala(三十一):scala面向对象 特质(trait)
目录 特质(trait) 作为接口使用 定义具体的方法 定义具体方法和抽象方法 定义具体的字段和抽象的字段 实例对象混入trait trait调用链 trait的构造机制 trait继承class 特 ...
- 2021年大数据常用语言Scala(二十九):scala面向对象 单例对象
目录 单例对象 定义object - 掌握 伴生对象 - 掌握 apply方法 - 掌握 main方法 单例对象 Scala中没有static关键字,但是它支持静态 如果要定义静态的东西,统统定义到o ...
- 2021年大数据常用语言Scala(二十八):scala面向对象 MAVEN依赖和类
目录 scala面向对象 MAVEN依赖 类 - 掌握 创建类和对象 - 掌握 getter/setter - 了解 类的构造器 - 掌握 scala面向对象 MAVEN依赖 <?xml ver ...
- 2021年大数据常用语言Scala(二十七):函数式编程 聚合操作
目录 聚合操作 聚合 reduce 定义 案例 折叠 fold 定义 案例 聚合操作 聚合操作,可以将一个列表中的数据合并为一个.这种操作经常用来统计分析中 聚合 reduce reduce表示 ...
最新文章
- mysql变量使用总结
- 2011年8月51CTO壁纸点评活动获奖名单【已结束】
- ZYAR20A 亚克力2驱 蓝牙 298寻迹避障机器人 —— 程序目录
- Eclipse中引用依赖库library失败的原因
- vc++开发学习二(模态对话框和非模态对话框的创建和销毁)
- python导出项目_使用Python项目生成所有依赖包的清单方式
- php 数据库查重,使用SimHash进行海量内容数据查重 - PHP版
- 6-2 递归方法:汉诺塔问题 (10 分)
- 人工智能 机器学习 数据挖掘 数据分析 算法大全
- 闲聊一下android 3D 网络游戏
- 谈谈DDD(领域驱动设计)
- h5自动播放视频且有声音的办法
- 组装一台稳定的计算机
- docker 配置国内镜像源不起作用
- java中的轮子是什么意思_后端的轮子(一)
- GraphCL: Graph Contrastive Learning with Augmentations笔记
- 一份百投百中的计算机校招简历
- CMake 编译项目时提示找不到依赖项
- 计算机专业入学讲座,新生入学教育——计算机专业介绍
- nodejs Koa框架及常用中间件
热门文章
- git 9个小命令(三年修仙五年摸鱼也有喔) 一条龙服务
- springmvc默认方法名为映射名_SpringIoC和SpringMVC的快速入门
- Python版归并排序算法(附Python程序__name__属性用法演示视频)
- python 图片相似度算法比较_python 比较2张图片的相似度的方法示例
- 如何用python打印田字格_如何用EXCEL做一套田字格模板?在家给小孩练习写字
- idea中下载插件超时_完美解决idea无法搜索下载插件的问题
- html水滴掉下来越来越来越淡代码,水滴落到水面就消失了?没那么简单!看水滴如何翩翩起舞!...
- php 分布式 session,浅析PHP分布式中Redis实现Session的方法
- php定时器使用,PHP定时器的说明
- vue保存页面的值_vue前端页面跳转参数传递及存储