文章目录

  • ​​List​​
  • ​​ListBuffer​​
  • ​​队列Queue​​

List

scala 中的List和javaList 不同,java 中List是一个接口,实际存取数据的是ArrayList
而scala中的list可以直接存放数据,默认情况下Scala的List是不可变的,List属于序列Seq
操作示例:

def testList(): Unit ={
//默认使用不可变集合
val list1= List(1,2,3);
//list1
println(list1)
val list2 = Nil//声明空结合
println(list2)
//访问元素
println(list1(1))
//:+在最后追加元素
var list3=list1:+4;
println(list3)
//追加后原集合不变 产生一个新的集合
println(list1)
//+: 在集合前边追加元素
var list4 = 10+:list1
println(list4)

val list5= 4::5::6::list1::Nil
/*

1)符号::表示向右边的集合中添加元素
2)运算时集合对象一定要放在最右边,左侧元素被添加到集合中 运算顺序 从右向左
3):::运算符号是将集合中的每个元素加入到右侧集合中去 运算符的左右必须都是集合

步骤说明
1)List()
2)list(List(1,2,3))
3)List(6,List(1,2,3))
4)List(5,6,List(1,2,3))
5)List(4,5,6,List(1,2,3))
*/
println("list5:"+list5)
val list6 = 4::5::6::list1:::Nil
/*
步骤说明
1)List()
2)list(1,2,3)
3)List(6,1,2,3)
4)List(5,6,1,2,3)
5)List(4,5,6,1,2,3)
*/
println("list6:"+list6)

}

ListBuffer

ListBuffer是可变list集合,可以添加,删除元素,ListBuffer属于序列
示例:

def test(): Unit ={
import scala.collection.mutable.ListBuffer
//创建集合
val list1 = ListBuffer[Int](1,2,3);
println(list1(1))//访问集合元素数
//遍历集合
for(item <-list1){
println(item)
}

//动态增加元素
list1+=4; //在最后位置追加元素
list1.append(5)//在最后位置追加元素
println(list1)//ListBuffer(1, 2, 3, 4, 5)

var list2=new ListBuffer[Int]();
list2 ++=list1
//list1.append(5)//在最后位置追加元素
println(list2)//ListBuffer(1, 2, 3, 4, 5)
var list3 = list2:+5
println("list3:"+list3)//list3:ListBuffer(1, 2, 3, 4, 5, 5)
println("list2:"+list2)//list2:ListBuffer(1, 2, 3, 4, 5)

//元素删除
list2.remove(0)//根据下标删除元素
println("list2:"+list2)//list2:ListBuffer(2, 3, 4, 5)
}

队列Queue

1)队列是一个有序列表,底层可以用数组或链表来实现
2)遵循先入先出的原则,
3)scala中队列可以直接使用 Queue,scala.collection.mutalbe.Queue 和 scala.collection.immutalbe.Queue 一般开发中使用可变集合队列

def test(): Unit ={
//队列创建
var q1= new mutable.Queue[Any]()
println("q1:"+q1)
//添加元素
q1+=1
println("q1:"+q1)
//添加集合中的元素
q1 ++= List(2,3,4)//追加List中的元素 List到末尾
println("q1:"+q1)
//添加元素
q1 += List(5) //将list追加到队列中
q1.enqueue(10,11,12)//入队列 追加元素到队列尾部
println("q1:"+q1)

//删除元素
//从队列头取出一个元素
var ele=q1.dequeue();
println("ele:"+ele)
println("q1:"+q1) //Queue(2, 3, 4, List(5), 10, 11, 12)
//获取队列中的元素 但不删除
println("head:"+q1.head)//2
println("q1:"+q1) //Queue(2, 3, 4, List(5), 10, 11, 12)
println("last:"+q1.last)//12
println("q1:"+q1)//Queue(2, 3, 4, List(5), 10, 11, 12)
println("tail:"+q1.tail)//Queue(3, 4, List(5), 10, 11, 12)
println("q1.tail.tail.tail:"+q1.tail.tail.tail)
}