Scala 的List
Scala列表类似于数组,它们所有元素的类型都相同,但是它们也有所不同。首先,列表是不可变的,值一旦被定义了就不能改变,其次,列表具有递归的结构(也就是链表结构), 而数组不是。列表的元素类型T可以写成List[T]。
1.1 Scala的List概述
Scala中的List 与Java中的完全不同,它是基于链表实现的并且是一个不可变的集合,无论大小还是元素都是不可变的。由于List的这种特性,它在Scala中的大部分操作是基于递归进行的。List与栈类似,也是后进先出的数据结构。
1.Scala的List的构建
在Scala中可以通过Nil和:方式构建List。 Nil表示空,相当于List(,即List集合中没有任何元素。::表示添加的意思,与堆栈的push有些类似。定义 List(1,2,3,4)的方式相当于1:::3::Nil。在集合中添加多个集合元素使用..方式,例如 List(1,2)=11,List(3,4)=12,结合这两个集合可以使用1:12=(1,2,3,4)。
2.Scala的List的类型
定义List的类型方式为List[T],T表示数据类型,指定List集合中只能存放T类型的元素。例如List[String]表示List集合中只可以存放String类型的元素。
3.Scala的List对应的懒加载集合
Stream类似于之前介绍的view,只是view适用于所有集合,而Stream相当于List集合的懒加载形式。例如,定义一个Stream,Stream(1,2,3)等价于1#::2#::3::Stream.empty。当对Stream进行转换操作时,不会立即求值。当强制操作时才会触发求值操作。
4.Scala的List的可变
List是一个不可变的集合,想要获取可变的序列就需要Listbuffer,List与Listbuffer之间相互对应。 通过-=或+=方式删除或添加元素,还可以调用remove方法移除元素。Listbuffer可以通过索引方式赋值,而List 不可以。
1.2 Scala的List的基本操作
1.可变List
相关代码如下:
import scala.collection.mutable.ListBuffer
// List:
// 有序:下标从0开始,可以依次访问
// 链表结构:有头有尾
// 分类:可变,不可变(默认不可变)
// 操作:添加,删除,修改,查询,遍历
object list_1 {
//可变
def main(args: Array[String]): Unit = {
val li1 = ListBuffer(2, 3, 4)
//头
// val firstOne = li1.head
//尾
// val lastOne = li1.last
//1.添加
// 在头部添加
li1.prepend(1)
// 在尾部添加
li1 += 5
li1.prepend(6)
//2.删除
//2.1删除某个元素
// li1 -= 5
//2.2删除某个位置的元素,例如,删除第三个
li1.remove(2)
//3.修改
// 下标来修改
li1(0) = 100
//4.查询
println(s"200在不在list中 ${li1.contains(200)}")
//5.合并 ++。 简单的合并,没有去重。
val li3 = ListBuffer(1, 2, 3) ++ ListBuffer(2, 3, 4)
println(li3)
//6.遍历
//6.1 for
// for(i <- li1){println(i)}
//6.2 foreach
li1.foreach(println)
// println(li1)
}
}
2.不可变List
相关代码如下:
object list_2 {
//不可变
def main(args: Array[String]): Unit = {
val li1 = ListBuffer(2, 3, 4)
//头
val firstOne = li1.head
//尾
val lastOne = li1.last
//通过下标来访问元素
println(li1(1)) // 1 就是第二个元素
//li1(1)=200
// println(firstOne,lastOne)
//合并
//(1) :::
//(2) ++
val li3 = li1 ++ List(5, 6, 7)
println(li3)
}
}
原文地址:https://blog.csdn.net/2301_81748087/article/details/143690155
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!