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

  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. ORACLE中的varchar2()与nvarchar2()的讲解

    Oracle中NVARCHAR2和VARCHAR2的区别 [转]NVARCHAR2和VARCHAR2的区别,从使用角度来看区别在于:NVARCHAR2在计算长度时和字符集相关的,例如数据库是中文字符集 ...

  2. NOI 2018 Day1 T1 归程

    题面见洛谷 难点:  走过有积水的地方之后就需计算路径长了 关键算法:   kruskal重构树 ①原来的 kruskalkruskalkruskal 算法就是用并查集实现的, 但当我们使用 krus ...

  3. 深海Django少年

    orm查询,如果遇到我之前的环境报错 就可去manage.py中拷贝前四行代码到tests文件中,然后增加两行代码: import django django.setup() 或者任意新建一个py文件 ...

  4. cordova-plugin-alipay-v2使用篇(更新至20170725)(亲测可用)

    cordova-plugin-alipay-v2使用篇(更新至20170725)(亲测可用) alipaySdk已更新至20170725版本 支付宝WS_APP_PAY_SDK_BASE_2.0 &l ...

  5. react 16.3+ 新生命周期 作业

    1.有哪些⽣命周期被舍弃(3个),哪些⽣命 周期是新增(2个)? componentWillMount().componentWillReceiveProps().componentWillUpdat ...

  6. WiFi基础知识

    自从只需少量的话费就可以将笔记本.平板电脑连接到互联网,WiFi已成为我们熟知的网络,并无处不在.Wi-Fi对于一些物联网应用十分有用,比如楼宇自动化.内部能源管理.WiFi的重要性对于我们的日常生活 ...

  7. 怎么进行代码审查(Code Review)

    代码审查的重要性 代码审查是熟悉软件架构,了解软件业务逻辑的好方法.学习代码是需要切入点的,一个上百万行代码的系统,从哪里开始着手?只能一个模块一个模块,一个组件一个组件的来熟悉,掌握.实现一个比较大 ...

  8. Kali Linux 开启SSH

    Kali Linux安装好默认是不开启ssh的,需要手工开启 1.修改/etc/ssh/sshd_config 配置文件: root@mykali:~# vi  /etc/ssh/sshd_confi ...

  9. MySql进行批量插入时的几种sql写法

    insert into:插入数据,如果主键重复,则报错 insert repalce:插入替换数据,如果存在主键或unique数据则替换数据 insert ignore:如果存在数据,则忽略. INS ...

  10. 【扯淡篇】SDOI2018丶一轮游丶记

    --某不知名蒟蒻的SDOI2018 R1退役场游记&&OI生涯总结 真的是混不下去了. 进队是不可能的, 进队是不可能进队的. 这辈子不可能进队的. 刷题又不会刷 就是靠打表找规律这种 ...