scala 学习笔记一 列表List
1、介绍
Scala 列表类似于数组,它们所有元素的类型都相同,但是它们也有所不同:列表是不可变的,值一旦被定义了就不能改变,其次列表 具有递归的结构(也就是链接表结构)而数组不是。。
列表的元素类型 T 可以写成 List[T]。例如,以下列出了多种类型的列表:

构造列表的两个基本单位是 Nil 和 ::
Nil 也可以表示为一个空列表。
以上实例我们可以写成如下所示:

2、列表基本操作
Scala列表有三个基本操作:
1、head 返回列表第一个元素
2、tail 返回一个列表,包含除了第一元素之外的其他元素
3、isEmpty 在列表为空时返回true
对于Scala列表的任何操作都可以使用这三个基本操作来表达。实例如下:
连接列表



++: 与++不同的是使用的右边边的数据类型

List.fill()
我们可以使用 List.fill() 方法来创建一个指定重复数量的元素列表:

List.tabulate()
List.tabulate() 方法是通过给定的函数来创建列表。
方法的第一个参数为元素的数量,可以是二维的,第二个参数为指定的函数,我们通过指定的函数计算结果并返回值插入到列表中,起始值为 0,实例如下

List.reverse
List.reverse 用于将列表的顺序反转,实例如下:

Scala List 常用方法
1、为列表预添加元素
+: 在List的头部增加元素
:+ 在后面追加元素


2、def addString(b: StringBuilder): StringBuilder
将列表的所有元素添加到 StringBuilder

3、def addString(b: StringBuilder, sep: String): StringBuilder
将列表的所有元素添加到 StringBuilder,并指定分隔符

4、通过列表索引获取元素
def apply(n: Int): A

5、检测列表中是否包含指定的元素
def contains(elem: Any): Boolean

6、将列表的元素复制到数组中
def copyToArray(xs: Array[A], start: Int, len: Int): Unit

7、去除列表的重复元素,并返回新列表
def distinct: List[A]

8、丢弃前n个元素,并返回新列表
def drop(n: Int): List[A]

9、丢弃最后n个元素,并返回新列表
def dropRight(n: Int): List[A]

10、从左向右丢弃元素,直到条件p不成立
def dropWhile(p: (A) => Boolean): List[A]

11、检测列表是否以指定序列结尾
def endsWith[B](that: Seq[B]): Boolean

12、判断是否相等
def equals(that: Any): Boolean

13、判断列表中指定条件的元素是否存在
判断l是否存在某个元素:

14、输出符号指定条件的所有元素。
过滤出长度为3的元素:

15、检测所有元素
例如:判断所有元素是否以"a"开头:

16、将函数应用到列表的所有元素
def foreach(f: (A) => Unit): Unit

17、获取列表的第一个元素,获取列表的最后一个原始
def head: A
def last: A


18、从指定位置 from 开始查找元素第一次出现的位置
def indexOf(elem: A, from: Int): Int

19、返回所有元素,除了最后一个,返回所有元素,除了第一个
def init: List[A]
def tail: List[A]

20、计算多个集合的交集
def intersect(that: Seq[A]): List[A]

21、检测列表是否为空
def isEmpty: Boolean

22、创建一个新的迭代器来迭代元素
def iterator: Iterator[A]

23、在指定的位置 end 开始查找元素最后出现的位置
def lastIndexOf(elem: A, end: Int): Int

24、返回列表长度
def length: Int

25、通过给定的方法将所有元素重新计算
def map[B](f: (A) => B): List[B]

26、查找最大元素,查找最小元素
def max: A,def min: A

27、列表所有元素作为字符串显示
def mkString: String

28、使用分隔符将列表所有元素作为字符串显示
def mkString(sep: String): String

29、列表反转
def reverse: List[A]

30、列表排序
def sorted[B >: A]: List[A]

31、检测列表在指定位置是否包含指定序列
def startsWith[B](that: Seq[B], offset: Int): Boolean

32、计算集合元素之和
def sum: A

33、提取列表的前n个元素
def take(n: Int): List[A]

34、提取列表的后n个元素
def takeRight(n: Int): List[A]

35、列表转换为数组
def toArray: Array[A]

36、返回缓冲区,包含了列表的所有元素
def toBuffer[B >: A]: Buffer[B]

37、List 转换为 Map
def toMap[T, U]: Map[T, U]
38、List 转换为 Seq
def toSeq: Seq[A]

39、List 转换为 Set
def toSet[B >: A]: Set[B]

41、列表转换为字符串
def toString(): String

参考:http://www.runoob.com/scala/scala-lists.html
scala 学习笔记一 列表List的更多相关文章
- scala学习笔记(8): 列表的map,flatMap,zip和reduce
map,flatMap,zip和reduce函数可以让我们更容易处理列表函数. 1 map函数map将一个函数应用于列表的每一个元素并且将其作为一个新的列表返回.我们可以这样对列表的元素进行平方: s ...
- 基于.net的分布式系统限流组件 C# DataGridView绑定List对象时,利用BindingList来实现增删查改 .net中ThreadPool与Task的认识总结 C# 排序技术研究与对比 基于.net的通用内存缓存模型组件 Scala学习笔记:重要语法特性
基于.net的分布式系统限流组件 在互联网应用中,流量洪峰是常有的事情.在应对流量洪峰时,通用的处理模式一般有排队.限流,这样可以非常直接有效的保护系统,防止系统被打爆.另外,通过限流技术手段,可 ...
- Scala学习笔记及与Java不同之处总结-从Java开发者角度
Scala与Java具有很多相似之处,但又有很多不同.这里主要从一个Java开发者的角度,总结在使用Scala的过程中所面临的一些思维转变. 这里仅仅是总结了部分两种语言在开发过程中的不同,以后会陆续 ...
- python学习笔记整理——列表
Python 文档学习笔记 数据结构--列表 列表的方法 添加 list.append(x) 添加元素 添加一个元素到列表的末尾:相当于a[len(a):] = [x] list.extend(L) ...
- python3.4学习笔记(十一) 列表、数组实例
python3.4学习笔记(十一) 列表.数组实例 #python列表,数组类型要相同,python不需要指定数据类型,可以把各种类型打包进去#python列表可以包含整数,浮点数,字符串,对象#创建 ...
- Scala学习笔记之:tuple、array、Map
[TOC] 本文<快学Scala>的笔记 tuple学习笔记 tuple的定义 对偶是元组(tuple)的最简单形态--元组是不同类型的值的聚集. 元组的值是通过将单个值包含在圆括号中构成 ...
- 机器学习(三)--- scala学习笔记
Scala是一门多范式的编程语言,一种类似Java的编程语言,设计初衷是实现可伸缩的语言.并集成面向对象编程和函数式编程的各种特性. Spark是UC Berkeley AMP lab所开源的类Had ...
- 【大数据】Scala学习笔记
第 1 章 scala的概述1 1.1 学习sdala的原因 1 1.2 Scala语言诞生小故事 1 1.3 Scala 和 Java 以及 jvm 的关系分析图 2 1.4 Scala语言的特点 ...
- Scala学习笔记(二)表达式和函数
笔记的整理主要针对Scala对比Java的新特性: 1.if表达式 if表达式是有结果返回的. val a= if (5>2) "你好" else 1 a的值为if表达式 ...
随机推荐
- poj2676(数独)
也是一个简单剪枝的dfs.记录所有为0的位置,依次填写,当发现某个空格可选的填写数字已经没有时,说明该支路无效,剪掉. 不算是一个难题吧,但是还是花了不少时间,问题主要出在细节上,行列坐标反了.3乘3 ...
- Swift2.0语言教程之类的属性
Swift2.0语言教程之类的属性 类 虽然函数可以简化代码,但是当一个程序中出现成百上千的函数和变量时,代码还是会显得很混乱.为此,人们又引入了新的类型——类.它是人们构建代码所用的一种通用.灵活的 ...
- 同步VDP时间
使用yast 进入蓝屏界面,修改system—date and time,取消hardware clock set to utc,时区设置为上海或者北京,然后sntp -r 时间服务器地址 敲击syn ...
- redis keys 命令
## 删除存在的key del key ## 序列体弱给定key,并返回被序列化的值 dump key ## 检查key是否存在 exists key ## 为给定key设置过期时间 expire k ...
- android 数据存储方式
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha 1,文件 2,内容提供者 3,偏好设置 4,数据库 5,网络存储. 网络存储,就是上传到 ...
- 【洛谷】2473:[SCOI2008]奖励关【期望DP(倒推)】
P2473 [SCOI2008]奖励关 题目背景 08四川NOI省选 题目描述 你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关.在这个奖励关里,系统将依次随机抛出k次宝物,每次你都可以选择吃或者不 ...
- UVA 2474 - Balloons in a Box 爆搜
2474 - Balloons in a Box 题目连接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&a ...
- Slickflow.NET 开源工作流引擎基础介绍(二) -- 引擎组件和业务系统的集成
集成流程引擎的必要性 业务过程的变化是在BPM系统中常见的现象,企业管理层需要不断优化组织架构,改造业务流程,不可避免地带来了业务流程的变化,企业信息系统就会随之面临重构的可能性.一种直接的方式是改造 ...
- MySql_delete同时删除多表相关联记录
sql delete同时删除多表相关联记录 sqlserver 支持级联更新和删除oracle 只支持级联删除 删除包含主键值的行的操作,该值由其它表的现有行中的外键列引用.在级联删除中,还删除其外键 ...
- Git_解决冲突
人生不如意之事十之八九,合并分支往往也不是一帆风顺的. 准备新的feature1分支,继续我们的新分支开发: $ git checkout -b feature1 Switched to a new ...