11、scala基础语法-序列seq

1、序列Seq

  • 数组:不可变Array、可变ArrayBuffer
  • list集合:不可变List、可变ListBuffer
  • 队列:可变mutable.Queue

2、数组

1)不可变数组 Array

import scala.collection.mutable.ArrayBuffer

object Scala01_Array {

  def main(args: Array[String]): Unit = {
    //java数组: int[] inst = new int[4]  / int[] inst = new int[4]{1,2,3,4}
    // 获取 inst[0] 结果:1
    // 赋值:inst[1] = 9

    //scala

    //不可变数组 Array
    //创建(两种)
    val a :Array[Int] = new Array[Int](3)
    val ints :Array[Int] = Array(1,2,3) //直接使用Array,因为有apply方法
    //长度
    println(ints.length)
    // 获取
    println(ints(0))

    // 数据的几种打印方式
    println(ints.mkString(",")) //1,2,3

    for (elem <- ints) {
      println(elem)
    }

    //foreach:需要(Int)=>Unit,一个函数类型
    ints.foreach(i=> {println(i)})
    ints.foreach(i=> println(i))
    ints.foreach(println(_))
    ints.foreach(println)

    println(ints) // [I@48140564
    println(ints.+("sss")) //[I@48140564sss

    //更新(Array是不可变数组,引用地址不可变,内容可变,所以可以更新)
    ints.update(2,5)  // 或者 ints(2) = 5
    println(ints.mkString(",")) //1,2,5

    // 增加:因为长度固定,所以会生成新的数组
    val ints1: Array[Int] = ints :+ 9
    val ints2: Array[Int] = 9 +: ints  //:贴近数组的一方
    val ints3: Array[Int] =ints1 ++ ints2

    println(ints1.mkString(",")) //1,2,5,9
    println(ints2.mkString(",")) //9,1,2,5
    println(ints == ints1) //false ,内存地址不一样,inst1是新的数组
    println(ints3.mkString(",")) //1,2,5,9,9,1,2,5

  }
}

2、可变数组 ArrayBuffer

import scala.collection.mutable.ArrayBuffer

object Scala01_Array {

  def main(args: Array[String]): Unit = {
    //java数组: int[] inst = new int[4]  / int[] inst = new int[4]{1,2,3,4}
    // 获取 inst[0] 结果:1
    // 赋值:inst[1] = 9

    //scala
    //不可变数组
    val arrayBuffer: ArrayBuffer[Int] = ArrayBuffer(5,6,7,8)

    //修改
    arrayBuffer(0) = 9
    println(arrayBuffer.mkString(",")) // 9,6,7,8

    //增加
    arrayBuffer.append(77)  //返回值是Unit,不是新数组
    val buffer1: ArrayBuffer[Int] = arrayBuffer += 88
    arrayBuffer.insert(2,55)
    println(arrayBuffer.mkString(",")) //9,6,55,7,8,77,88
    println(arrayBuffer == buffer1) //true 同一个引用地址

    //删除
    //remove一个参数:代表索引,返回值是删除的值
    val i: Int = arrayBuffer.remove(2)
    println(arrayBuffer.mkString(",")) //9,6,7,88
    arrayBuffer.remove(3,2)//返回值是Unit,不是新数组
    println(arrayBuffer.mkString(",")) //9,6,7,88

  }

}

3、可变数组与不可变数组之间转换

import scala.collection.mutable
import scala.collection.mutable.ArrayBuffer

object Scala01_Array {
  def main(args: Array[String]): Unit = {
    
    //不可变Aarry  -> 可变ArrayBuffer
    val buffer: mutable.Buffer[Int] = ints.toBuffer
    //可变ArrayBuffer  -> 不可变Aarry
    val array: Array[Int] = arrayBuffer.toArray

  }
}

3、List集合

1)不可变List

import scala.collection.mutable
import scala.collection.mutable.ListBuffer

object Scala02_List {
  def main(args: Array[String]): Unit = {

    //seq
    //不可变
    val list: List[Int] = List(1,2,3,4)
    //获取
    println(list(2)) // 3

    //增加数据
    val list1: List[Int] = list :+ 1
    val list2: List[Int] = 1 +: list
    println(list1.mkString(","))  //1,2,3,4,1
    println(list2.mkString(","))  //1,1,2,3,4
    println(list1 == list) //false list1是集合
    println(list2 == list)//false list2是集合

    val list4: List[Int] = list1 ++ list2
    println(list4.mkString(",")) //1,2,3,4,1,1,1,2,3,4

    val list5: List[Int] = list.::(9) // list :: 9这种写法报错
    println(list5.mkString(",")) // 9,1,2,3,4

    //list中冒号运算符:从右到左
    val list6: List[Int] = 7 :: 8 :: 9 ::list  //(7 :: (8 :: (9 ::list)))
    println(list6.mkString(",")) //7,8,9,1,2,3,4

    val list7 = 9 :: list1 :: list2
    println(list7.mkString(","))  //List(9, List(1, 2, 3, 4, 1), 1, 1, 2, 3, 4)
    val list8 = 9 :: list1 ::: list2
    println(list8.mkString(",")) //9,1,2,3,4,1,1,1,2,3,4

    //特殊的集合(Nil空集合)
    println(List()) //List()
    println(Nil) // List()
    val list9 =1 :: 2 :: Nil
    println(list9.mkString(",")) //1,2

    //删除
    val list10: List[Int] = list1.drop(2)
    println(list10.mkString(",")) //3,4,1 (前两个都删掉了)
    println(list10 == list1) //false
  }
}

2)可变ListBuffer集合

import scala.collection.mutable
import scala.collection.mutable.ListBuffer

object Scala02_List {
  def main(args: Array[String]): Unit = {

    //可变集合ListBuffer

    var listBuffer = ListBuffer(5,6,7,8)

    /*
    //具有通用方法
    listBuffer.insert()
    listBuffer.update()
    listBuffer.remove()
    listBuffer.drop()*/

    //集合属性
    //头
    println(listBuffer.head) // 5
    //最后一个
    println(listBuffer.last) //8


    //初始化(除了最后一个)
    println(listBuffer.init) //ListBuffer(5, 6, 7)
    //尾(除了头以外的)
    println(listBuffer.tail) //ListBuffer(6, 7, 8)

  }
}

4、队列:可变mutable.Queue

import scala.collection.mutable
import scala.collection.mutable.ListBuffer

object Scala02_List {
  def main(args: Array[String]): Unit = {

    // 队列 可变的 先进先出
    val queue: mutable.Queue[Int] = mutable.Queue(1,2,3,4)
    //放入
    queue.enqueue(5)
    println(queue) //Queue(1, 2, 3, 4, 5)

    //取出(队列中取出就是删除)
    queue.dequeue()
    println(i) //1
    println(queue) //Queue(1, 2, 3, 4, 5)
  }
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容