List 追加数据和其它使用 | 学习笔记

简介: 快速学习 List 追加数据和其它使用

开发者学堂课程【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”)

相关文章
|
7月前
|
数据处理
利用Stream流将取到的对象List<对象>形式数据进行分组统计转变成Map<分组条件,数量统计>形式
利用Stream流将取到的对象List<对象>形式数据进行分组统计转变成Map<分组条件,数量统计>形式
72 0
|
4月前
|
存储 Java
Java学习笔记 List集合的定义、集合的遍历、迭代器的使用
Java学习笔记 List集合的定义、集合的遍历、迭代器的使用
|
3月前
|
存储 JSON NoSQL
redis基本数据结构(String,Hash,Set,List,SortedSet)【学习笔记】
这篇文章是关于Redis基本数据结构的学习笔记,包括了String、Hash、Set、List和SortedSet的介绍和常用命令。文章解释了每种数据结构的特点和使用场景,并通过命令示例演示了如何在Redis中操作这些数据结构。此外,还提供了一些练习示例,帮助读者更好地理解和应用这些数据结构。
redis基本数据结构(String,Hash,Set,List,SortedSet)【学习笔记】
|
3月前
|
Python
Python量化炒股的获取数据函数— get_billboard_list()
Python量化炒股的获取数据函数— get_billboard_list()
49 0
|
3月前
|
Java API 开发者
代码小妙招:用Java轻松获取List交集数据
在Java中获取两个 `List`的交集可以通过 `retainAll`方法和Java 8引入的流操作来实现。使用 `retainAll`方法更为直接,但会修改原始 `List`的内容。而使用流则提供了不修改原始 `List`、更为灵活的处理方式。开发者可以根据具体的需求和场景,选择最适合的方法来实现。了解和掌握这些方法,能够帮助开发者在实际开发中更高效地处理集合相关的问题。
110 1
|
4月前
|
索引
【Qt 学习笔记】Qt常用控件 | 多元素控件 | List Widget的说明及介绍
【Qt 学习笔记】Qt常用控件 | 多元素控件 | List Widget的说明及介绍
502 3
|
4月前
|
Python
【Pandas】Pandas的DataFrame按行插入list数据或者读取一行并存为csv文件
本文提供了使用Pandas库对DataFrame进行操作的示例代码。
231 0
|
5月前
|
NoSQL Java Redis
Redis09-----List类型,有序,元素可以重复,插入和删除快,查询速度一般,一般保存一些有顺序的数据,如朋友圈点赞列表,评论列表等,LPUSH user 1 2 3可以一个一个推
Redis09-----List类型,有序,元素可以重复,插入和删除快,查询速度一般,一般保存一些有顺序的数据,如朋友圈点赞列表,评论列表等,LPUSH user 1 2 3可以一个一个推
|
5月前
|
存储 语音技术 Python
语音识别,函数综合案例,黑马ATM,/t/t一个对不齐,用两个/t,数据容器入门,数据容器可以分为列表(list)、元组(tuple)、字符串(str)、集合(set)、字典(dict)
语音识别,函数综合案例,黑马ATM,/t/t一个对不齐,用两个/t,数据容器入门,数据容器可以分为列表(list)、元组(tuple)、字符串(str)、集合(set)、字典(dict)
|
6月前
|
编译器 C++ 容器
【C++】学习笔记——list
【C++】学习笔记——list
29 0