/**
* 序列分为可变长和不可变长,序列其实就是list,底层是链表结构
* 特点:插入有序,可重复,增加和移除元素很快,查询慢
* 不可变长序列:List
* 可变长序列:ListBuffer
*/
 /**
* 不可变长序列List ,长度不可变,角标元素也不可变
*/
val list = List(1,2,3,4,5)
/*list(0) = 11
println(list(0)) // Error:(17, 5) value update is not a member of List[Int] list(0) = 11*/ //++ 并没有改变原有的list,只是将连个list序列进行合并形成一个新的list
val list1 = list ++ List(6,7,8)
println(list1) // List(1, 2, 3, 4, 5, 6, 7, 8)
println(list.toBuffer) // ArrayBuffer(1, 2, 3, 4, 5)
/**
* 定义可变长序列
*/
val listb = ListBuffer(1,2,3,4,5)
// += 或 -= 后面只能跟一个单个的元素
listb += 11
listb -= 1
println(listb) // ListBuffer(2, 3, 4, 5, 11) // ++= 或--后面只能跟一个序列 List 或 ListBuffer
listb ++= List(23)
listb ++= ListBuffer(25)
listb.append(34,35)
println(listb) // ListBuffer(2, 3, 4, 5, 11, 23, 25,34,35) //移除指定角标的元素
listb.remove(0)
//从指定角标开始,移除指定个数的元素
listb.remove(1, 2)
   /**
* 给list头部添加元素
*/
val list01 = List(4, 5, 6)
//注意,这里并不是将元素添加到list01里面,而是将list01和后面的元素(1,2,3)进行合并然后形成一个新的list
//newList,需要注意的是后面的(1,2,3)是作为一个整体和list0进行合并
var newlist = list01.:: (1,2,3) // List((1,2,3), 4, 5, 6)
newlist = list01.+:(1, 2, 3) // List((1,2,3), 4, 5, 6)
newlist = (1,2,3) ::list01 // List((1,2,3), 4, 5, 6)
newlist= (1,2,3) +:list01 // List((1,2,3), 4, 5, 6)
newlist = list01 ++ List(1,2,3) // List(1, 2, 3, 4, 5, 6) /**
* 给list尾部添加元素
*/
var list02 = List(4, 5, 6)
//这里也是将(7,8,9)作为整体同list02进行合并添加到尾部,形成一个新的list
var newList02 = list02.:+(7, 8, 9) //List(4, 5, 6,(7, 8, 9)) //将7,8,9进行拆分同list02进行合并插入到list02后面去形成一个新的list,原来的list并没有改变
newList02 = list02 ++ List(7, 8, 9) //List(4, 5, 6, 7, 8, 9)
   /**
* 序列的常用操作方法
*/
val lt = List(1, 2, 3, 4, 5)
//求和
println(lt.sum) //15
//最大值
println(lt.max) //5
//最小值
println(lt.min) //1
//第一个元素
println(lt.head) //1
//最后一个元素
println(lt.last) //5
//反转序列,形成一个新的list,原来的list不会别改变
println(lt.reverse) //List(5, 4, 3, 2, 1)
//拼接
println(lt.mkString) //
println(lt.mkString(",")) //1,2,3,4,5
println(lt.mkString("[", ",", "]")) //[1,2,3,4,5]
  
/**
* 序列的转换操作
*/
val list03 = List(1,2,3,4,5,6,7,8)
list03.map(_ * 2).filter(x => x > 10).distinct.reverse.foreach(println(_))

scala (5) 可变序列和不可变序列的更多相关文章

  1. Python中的可变、不可变对象和赋值技巧序列解包

    可变对象和不可变对象 在python中一切皆对象.在Python中不存在所谓的值传递调用,一切传递都是对象的引用,也可认为是传址. python中,对象分为可变(mutable)和不可变(immuta ...

  2. scala可变var与不可变val的理解

    我们定义变量的时候分为var可变变量和val不可变变量. 我们使用容器的时候也分为可变容器和不可变容器. List和Tuple本身就是不可变的,set和map分为可变和不可变的,默认为不可变. 我们看 ...

  3. Python数据类型之“序列概述与基本序列类型(Basic Sequences)”

    序列是指有序的队列,重点在"有序". 一.Python中序列的分类 Python中的序列主要以下几种类型: 3种基本序列类型(Basic Sequence Types):list. ...

  4. 理解python可变类型vs不可变类型,深拷贝vs浅拷贝

    核心提示: 可变类型 Vs 不可变类型 可变类型(mutable):列表,字典 不可变类型(unmutable):数字,字符串,元组 这里的可变不可变,是指内存中的那块内容(value)是否可以被改变 ...

  5. python可变对象和不可变对象的解释

    数据类型分为可变.不可变.可变对象表示可以原处修改该数据对象,不可变对象表示必须创建新对象来保存修改后的数据. 在基础数据类型中: 数值.字符串.元组.frozenset是不可变对象 列表.set.d ...

  6. 【转】Python数据类型之“序列概述与基本序列类型(Basic Sequences)”

    [转]Python数据类型之“序列概述与基本序列类型(Basic Sequences)” 序列是指有序的队列,重点在"有序". 一.Python中序列的分类 Python中的序列主 ...

  7. python可变类型和不可变类型

    原文地址:http://www.cnblogs.com/huamingao/p/5809936.html 可变类型 Vs 不可变类型 可变类型(mutable):列表,字典 不可变类型(unmutab ...

  8. python可变类型和不可变类型,深拷贝vs浅拷贝

    转载:https://www.cnblogs.com/huamingao/p/5809936.html 核心提示: 可变类型 Vs 不可变类型 可变类型(mutable):列表,字典 不可变类型(un ...

  9. 『无为则无心』Python序列 — 24、Python序列的推导式

    目录 1.列表推导式 (1)快速体验 (2)带if的列表推导式 (3)多个for循环实现列表推导式 2.字典推导式 (1)创建一个字典 (2)将两个列表合并为一个字典 (3)提取字典中目标数据 3.集 ...

随机推荐

  1. C指针和数组

    一.指针 指针就是地址,指针变量是用来存放地址的变量,把谁的地址存放在指针变量中,就说此指针变量指向谁. 二.数组 1.一维数组 一维数组名代表数组首元素的地址,因此 *a=a[0]; &:取 ...

  2. 沉淀再出发:mongodb的使用

    沉淀再出发:mongodb的使用 一.前言 这是一篇很早就想写却一直到了现在才写的文章.作为NoSQL(not only sql)中出色的一种数据库,MongoDB的作用是非常大的,这种文档型数据库, ...

  3. Centos 7 iptables配置

    systemctl status firewalld.service #检测是否开启了firewall systemctl stop firewalld.service #关闭firewall syt ...

  4. IOS XMPP总结

    //前言:仿weixin实现一个即时通讯的案例,支持版本7.0以上 "准备工作 创建项目时使用git" /* 显示隐藏文件,看到git的文件夹 defaults write com ...

  5. MySQL存储过程-遍历游标的例子

    delimiter $$DROP PROCEDURE IF EXISTS pro_test ;CREATE PROCEDURE pro_test()begin DECLARE var_name var ...

  6. Apache Kafka系列(七)Kafka Repartition操作

    Kafka提供了重新分区的命令,但是只能增加,不能减少 我的kafka安装在/usr/local/kafka_2.12-1.0.2目录下面, [root@i-zk1 kafka_2.-]# bin/k ...

  7. [HNOI2006]马步距离

    嘟嘟嘟 这题首先直接bfs可定过不了,因此可以先贪心缩小两个点的距离,直到达到某一个较小的范围(我用的是30),再bfs暴力求解. 首先我们求出这两个点的相对距离x, y,这样就相当于从(x, y) ...

  8. 通过iframe标签绕过csp

    iframe.php代码如下: allow-popups开启时,window.open就可以打开新的窗口. 看csp规则,默认是在当前域内,如果这是一个ctf题的话,就很简单了,window.loca ...

  9. 了解Session的本质

    有一点我们必须承认,大多数web应用程序都离不开session的使用.这篇文章将会结合php以及http协议来分析如何建立一个安全的会话管理机制. AD: 有一点我们必须承认,大多数web应用程序都离 ...

  10. springmvc与Structs2本质区别

    1.前端控制器不同:structs2入口是一个filter过滤器,springmvc入口是一个servlet. 2.设计思想不同: struts2通过在action类中定义成员变量接收请求参数,str ...