Scala集合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)
  }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

catch that elf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值