美文网首页
快速学习Scala之数组

快速学习Scala之数组

作者: 固安李庆海 | 来源:发表于2018-09-28 09:33 被阅读0次

    Array

    在Scala中,Array代表的含义与Java中类似,也是长度不可改变的数组。此外,由于Scala与Java都是运行在JVM中,双方可以互相调用,因此Scala数组的底层实际上是Java数组。

    创建

    val a = new Array[Int](10)
    

    或者直接使用Array()创建数组,元素类型自动推断

    val a = Array("hello", "world")
    

    赋值

    使用 数组名称(index) = value 形式进行赋值,index从0开始,如

    a(0) = 1
    

    使用

    使用 数组名称(index)形式访问数组元素,index从0开始

    val tmp = a(0)
    

    使用for循环和until进行遍历

    //跳跃遍历Array
    for(i <- 0 until (a.length, 2))
      println(a(i))
    //从尾部遍历Array
    for(i <- (0 until a.length).reverse)
      println(a(i))
    // 使用“增强for循环”遍历Array
    for (e <- a)
      println(e)
    

    数组元素求和

    val sum = a.sum
    

    获取数组最大值

    val max = a.max
    

    对数组进行排序

    scala.util.Sorting.quickSort(a)
    

    ArrayBuffer

    在Scala中,如果需要类似于Java中的ArrayList这种长度可变的集合类,则可以使用ArrayBuffer,使用时需要预先导入ArrayBuffer类
    import scala.collection.mutable.ArrayBuffer。

    创建

    使用ArrayBuffer()的方式可以创建一个空的ArrayBuffer

    val ab = ArrayBuffer[Int]()
    

    赋值

    使用+=操作符添加或者多个元素;使用++=操作符添加其他集合中的所有元素。

    b += 1
    b += (2, 3, 4, 5)
    b ++= Array(6, 7, 8, 9, 10)
    
    

    使用

    使用trimEnd()函数,可以从尾部截断指定个数的元素

    b.trimEnd(5)
    

    使用insert()函数可以在指定位置插入元素,但是这种操作效率很低,因为需要移动指定位置后的所有元素

    //在指定位置插入一个元素
    b.insert(5, 6)
    //在指定位置插入多个元素
    b.insert(6, 7, 8, 9, 10)
    

    使用remove()函数可以移除指定位置的元素

    b.remove(1)
    b.remove(1, 3)
    

    Array与ArrayBuffer互相进行转换

    //ArrayBuffer 转为Array
    ab.toArray
    //Array转为ArrayBuffer
    a.toBuffer
    

    使用for循环和until进行遍历

    //跳跃遍历ArrayBuffer
    for(i <- 0 until (ab.length, 2))
      println(b(i))
    //从尾部遍历ArrayBuffer
    for(i <- (0 until ab.length).reverse)
      println(b(i))
    // 使用“增强for循环”遍历ArrayBuffer
    for (e <- ab)
      println(e)
    

    数组元素求和

    val sum = ab.sum
    

    获取数组最大值

    val max = ab.max
    

    对数组进行排序

    scala.util.Sorting.quickSort(ab)
    

    相关文章

      网友评论

          本文标题:快速学习Scala之数组

          本文链接:https://www.haomeiwen.com/subject/ctyuoftx.html