Scala collection List, ListBuffer and Queue

Article Directory

List

List in scala is different from javaList. List in java is an interface. The actual access data is ArrayList
while the list in scala can directly store data. By default, Scala's List is immutable. List is a sequence Seq
operation example:

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 is a variable list collection, you can add or delete elements, ListBuffer belongs to sequence
Example:

  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) Queue is an ordered list. The bottom layer can be realized by array or linked list.
2) Follow the principle of first-in first-out.
3) Queue in scala can directly use Queue, scala.collection.mutalbe.Queue and scala.collection.immutalbe. Queue uses variable collection queues in general development

 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)
  }

Guess you like

Origin blog.csdn.net/zhangxm_qz/article/details/107617009