开发者学堂课程【Scala 核心编程 - 进阶:List 追加数据和其它使用】学习笔记,与课程紧密连接,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/610/detail/9033
List 追加数据和其它使用
内容介绍:
一、List 应用案例的小结
二、访问 List 元素
三、元素的追加
四、课堂练习题
一、List 应用案例的小结
1. List 默认为不可变的集合
2. List 在 scala包对象声明的,因此不需要引入其它包也可以使用
3. val List = scala.collection.immutable.List
4. List 中可以放任何数据类型,比如 arr1的类型为 List[Any]
在上节案例中除了放整数外,还可以同时放字符串或者其他数据类型 。
例如:
val list01= list(1,2,3,”Hello”)
5.如果希望得到一个空列表,可以使用 Nil 对象,在 scala 包对象有声明的,因此不需
要引入其它包也可以使用声明为:
val Nil = scala.collection.immutable.Nil)
二、访问 List 元素
如何访问?
访问 List 元素与访问一个数组一样,因为 List 是属于序列的
例如:
val value1 = list01(1) //1是索引,表示取出第二个元素
println(“value1”=+value) //输出 value1 的值
三、元素的追加
1.基本介绍
向列表中增加元素,会返回新的列表/集合对象。原先的 List 并没有发生变化,只是返回了一个新的列表,所以仍然没有破坏 List 是不可变的这个特性.
注意:
Scala 中 List 元素的追加形式非常独特,和 Java 不一样。
2.追加的形式:
(1)方式一:在列表的最后增加数据
写法为 :+
例如:val list2=list1 :+4(注意:冒号的左边是集合,加号的右边是增加的具体元素)
代码:
val list1= List(1,2,3,”abc”)
//:+表示在列表的最后面增加数据
val list2=list1 :+4
println(list1) //没有变化,说明 list1 还是不可变的
println(list2)
//新的列表结果是[1,2,3,”abc”,4],也就是将 list1拷贝到 list2 然后
//加一个元素 :+ 是一个符号的重载,后面会专门讲到。
程序运行结果:
List(1,2,3,abc)
List(1,2,3,abc,4)
(2)方式二:在列表的最前面增加数据
写法为 +:
例如: val list2=list1+ :4(注意:冒号的右边是增加的具体元素,加号的左边是集合)
代码:
val list1= List(1,2,3,”abc”)
//:+表示在列表的最前面增加数据
val list3=list1 +:10
println(list1) //没有变化
println(“list3=”+list3) //新的列表结果是[10,1,2,3,”abc”]
程序运行结果:
List3=List(10,1.2,3,abc)
总结:
靠近冒号的一边是集合,靠近加号的一边是要增加的元素,追加数据后本身的集合并没有变化,上面元素的追加方式也体现出了 List 是有序的集合的一种特质。
(3)方式三:在列表的最后增加数据
说明:
1)符号 :: 表示向集合中新建集合添加元素
2)运算时,集合对象一定要放置在最右边(因为执行是从右开始,集合不能放入一个元素中,但元素可以放入一个集合)
3)运算规则,从右向左。
4)::: 运算符是将集合中的每一个元素加入到空集合中去
案例1:
// :: 符号的使用
val list4 = list(1,2,3,”abc”)
val liast5 = 4 :: 5 :: 6 :: list4 :: Nil
println(“lists5=”+list5)
说明:
Nil 表示一个空集合,val liast5 = 4 :: 5 :: 6 :: list4 :: Nil 表示将将4、5、6这些元素依次放到这个空集合中,这条指令的操作过程是,有一条空的 list(),将list4 放入空的list(),然后依次将6、5、4放入。执行过程从右至左。
运行结果:
List5=List(4,5,6,List(1,2,3,abc)
运行结果说明将 list4 原封不动的放入list5 中
案例2:
// ::: 符号的使用
val list4 = list(1,2,3,”abc”)
val liast5 = 4 :: 5 :: 6 :: list4 ::: Nil
println(“lists5=”+list5)
说明:
第一步操作与上一案例一样,是有一个空的 list()集合,但是第二步是将 list4 中的所有元素拿出后再放入空的 list()集合(先将 list4 扁平化),然后将6、5、4依次放入空的 list()。
运行结果:
List6=List(4,5,6,1,2,3,abc)
四、课堂练习题
1.val list1 = list(1,2,3,”abc”)
val liast5 = 4 :: 5 :: 6 :: Nil
println(list5)
输出的结果是什么?
答案:(4,5,6,,1,2,3,“abc”)
2. val list1 = list(1,2,3,”abc”)
val liast5 = 4 :: 5 :: 6 ::list1 ::9
println(list5)
输出的结果是什么?
答案:运行错误
3.val list1 = list(1,2,3,”abc”)
val liast5 = 4 :: 5 :: 6:::list1 ::: Nil
println(list5)
输出的结果是什么?
答案:报错,因为 ::: 的左右两边都应该是集合
4.val list1 = list(1,2,3,”abc”)
val liast5 = 4 :: 5 :: 6:::list1 :::list1::: Nil
println(list5)
输出的结果是什么?
答案:(4,5,6,”abc”,1,2,3,”abc”)