列表: 列表是不可变,也就是说不能通过赋值改变列表的元素; 列表有递归结构,而数据是连续的

  List 类型:List() 同样也是List(String)

  列表是基于Nil (是空的)和::(列表从前端扩展) x :: xs 的一个第一个元素为x, 后面紧跟元素 xs

  列表的操作:

  head :返回列表的第一个元素

  tail: 返回除第一个之外所有元素组成的列表

  isEmpty:如果返回为空,则返回真

head 和tail 方法仅能作用在非空列表上,如果在空上执行会抛异常

def isort(sx: List[Int]): List[Int] =  {
if (sx.isEmpty) Nil else isinsert(sx.head, isort(sx.tail))
} def isinsert(x: Int,sx: List[Int]) : List[Int] =
if (sx.isEmpty || x <= sx.head) x :: xs else sx.head :: isinsert(x, sx.tail)

列表模式: List(...) 对所有的元素做匹配,可以使用:: 操作符和Nil 常量组成的模式逐位拆分

使用匹配模式

 def isort2(sx: List[Int]) : List[Int] = sx match {
case List() => List()
case x :: sxl => insert2(x, isort2(sxl))
} def insert2(x: Int, xs: List[Int]): List[Int] = xs match {
case List() => List(x)
case y :: ys => if (x <= y) x:: xs else y :: insert2(x, ys)
}

List 类的一阶方法

xs::: ys结果依次是 sx , ys的新列表

访问列表尾部 init 方法和last方法

head 和tail 运行的都是常量,但是init和last 需要遍历整个列表以及算结果,所耗的时间和列表成正比

reverse反转列表方法:某种原因需要访问列表尾部,可以先反正在处理

前缀与后缀: drop, take和splitAt

scala 列表List的更多相关文章

  1. scala 列表的子集判断

    val list1=List.range(0,5) val list2=List.range(0,2) val list3=List(0,6) list1.contains(2) list1.cont ...

  2. scala 学习笔记一 列表List

    1.介绍 Scala 列表类似于数组,它们所有元素的类型都相同,但是它们也有所不同:列表是不可变的,值一旦被定义了就不能改变,其次列表 具有递归的结构(也就是链接表结构)而数组不是.. 列表的元素类型 ...

  3. 【scala】数组和列表

    一.数组Array 1.创建数组 隐式:val greetStrings = new Array[String](3); 显式:val greetStrings : Array[String] = n ...

  4. Scala - 快速学习05 - 数据结构

    1- 数组(Array) 数组一般包括定长数组和变长数组. 可以不指明数组类型,Scala会自动根据提供的初始化数据来推断出数组的类型. 在Scala中,对数组元素的应用,是使用圆括号,而不是方括号. ...

  5. Scala集合类型详解

    Scala集合 Scala提供了一套很好的集合实现,提供了一些集合类型的抽象. Scala 集合分为可变的和不可变的集合. 可变集合可以在适当的地方被更新或扩展.这意味着你可以修改,添加,移除一个集合 ...

  6. Spark记录-Scala集合

    Scala列表 Scala列表与数组非常相似,列表的所有元素都具有相同的类型,但有两个重要的区别. 首先,列表是不可变的,列表的元素不能通过赋值来更改. 其次,列表表示一个链表,而数组是平的. 具有类 ...

  7. 1.scala基础语法总结

    Scala基础语法总结:Scala 与 Java 的最大区别是:Scala 语句末尾的分号 ; 是可选的.如果一行里写多个语句那么分号是需要的 val s = "菜鸟教程"; pr ...

  8. Scala学习十三——集合

    一.本章要点 所有集合都扩展自Iterable特质; 集合有三大类,分别为序列,集和映射; 对于几乎所有集合类,Scala都同时提供可变和不可变的版本; Scala列表要么是空的,要么拥有一头一尾,其 ...

  9. scala 基础笔记

    view bound:必须传入一个隐式转换函数 class [T <% Ordered [T]] content bound:必须传入一个隐式值 class [T : Ordering] !异步 ...

随机推荐

  1. tushare下载安装教程与版本更新步骤

    使用前提 安装Python 安装pandas:pip install pandas 安装lxml:pip install lxml 下载安装 方式1:pip install tushare,如果安装网 ...

  2. android service 样例(电话录音和获取系统当前时间)

    关于android service 的具体解释请參考: android四大组件--android service具体解释.以下将用两个实例具体呈现Android Service的两种实现. 一个是st ...

  3. 安装FTP

    yum install vsftpd -y cd /etc/vsftpd/ touch login.txt vim login.txt db_load -T -t hash -f /etc/vsftp ...

  4. react中替换关键字并且高亮显示的方法

    在react项目中,将关键字高亮显示 : 首先封装一个方法,只需要传入('要检索的内容','检索的关键字','给内容中的关键字加上的有特殊标记的标签名')这三个参数即可高亮显示关键字.详见:https ...

  5. Javascript高级程序设计--读书笔记之Array类型

    1.数组的lenght属性 数组的lenght属性很有特点---他不是只读的,可以同过修改这个属性来向数组的末尾添值加或删除值, 删除值 var color = ["red", & ...

  6. Android开发环境部署:JDK+Android Studio

    1. 刚开始接触Android开发,首先需要为你的电脑安装java JDK(Java开发工具包),不管是用Eclipse还是Android Studio都需要只吃Java语言运行吧. 官网:Oracl ...

  7. KiCAD原理图导出PDF方法

    KiCAD原理图导出为PDF 1.文件->绘制 2.按照下图选择保存目录和输出格式后,选择绘制当前页或者所有页

  8. redis-布隆过滤器使用

    占用空间测试地址 https://krisives.github.io/bloom-calculator/

  9. Comet OJ - contest #3 C DP

    题意:给你一个长度为n序列,和一个数m,问这个序列有多少个子序列,满足这个子序列的所有子序列的和是m的倍数?答案对1e9 + 7取模,n, m范围到5e3; 思路:容易发现,如果一个子序列的长度是n, ...

  10. Java中有几种类型的流?

    (1)字节流 InputStream/OutputStream ①FileInputStream/FileOutputStream:文件字节流,用于文件的读写操作 ②BufferedInputStre ...