Scala—— 14.数组Array

1.定长数组

var array=new Array[T] (n)

 val arr = new Array[Int](4) //底层 int[] arr = new int[4]
    println(arr.length) // 4
 
    println("arr(0)=" + arr(0)) // 0
    //数据的遍历
 
    for (i <- arr) {
      println(i)
    }

var arr = Array(1, 3, “xx”)

 var arr = Array(1, 3, "xx")
    arr(1) = "xx"
    for (i <- arr) {
      println(i)
    }
 
    //可以使用我们传统的方式遍历,使用下标的方式遍历
    for (index <- 0 until arr.length) {
      printf("arr02[%d]=%s", index, arr(index) + "\t")
    }

2.变长数组

val arr = ArrayBuffer[T] (…)
val arr = ArrayBuffer[Any] (…)

object boke_demo01 {
 
  def main(args: Array[String]): Unit = {
    //创建ArrayBuffer
    val arr = ArrayBuffer[Any](3, 2, 5)
 
    //访问,查询
    //通过下标访问元素
    println("arr(1)=" + arr(1)) // arr(1) = 2
    //遍历
    for (i <- arr) {
      println(i)
    }
    println(arr.length) //3
    println("arr.hash=" + arr.hashCode())
 
 
    //修改 [修改值,动态增加]
    //使用append 追加数据 ,append支持可变参数
    //可以理解成java的数组的扩容
    arr.append(90.0, 13) // (3,2,5,90.0,13)
    println("arr.hash=" + arr.hashCode())
 
 
    println("===================")
 
 
    arr(1) = 89 //修改 (3,89,5,90.0,13)
    println("--------------------------")
    for (i <- arr) {
      println(i)
    }
 
    //删除...
    //删除,是根据下标来说
 
    arr.remove(0) // (89,5,90.0,13)
    println("--------删除后的元素遍历---------------")
    for (i <- arr) {
      println(i)
    }
    println("最新的长度=" + arr.length) // 4
 
  }
}

3.多维数组

val arr = Array.ofDim[T] (m,n)

object boke_demo01 {
 
  def main(args: Array[String]): Unit = {
    //创建
    val arr = Array.ofDim[Int](3, 4)
 
    //遍历
    for (item <- arr) { //取出二维数组的各个元素(一维数组)
      for (item2 <- item) { // 元素(一维数组) 遍历
        print(item2 + "\t")
      }
      println()
    }
    //指定取出
    println(arr(1)(1)) // 0
 
    //修改值
    arr(1)(1) = 9
 
    //遍历
    println("=====================")
    for (item <- arr) { //取出二维数组的各个元素(一维数组)
      for (item2 <- item) { // 元素(一维数组) 遍历
        print(item2 + "\t")
      }
      println()
    }
 
    //使用传统的下标的方式来进行遍历
    println("===================")
    for (i <- 0 to arr.length - 1) { //先对
      for (j <- 0 to arr(i).length - 1) {
        printf("arr[%d][%d]=%d\t", i, j, arr(i)(j))
      }
      println()
 
    }
  }
}

3.数组转换

A.定长数组和不定长数组转换
arr1.toBuffer 定长数组转可变数组,arr2.toArray //可变数组转定长数组,arr1.toBuffer 返回结果是一个可变数组,arr1本身没有变化,arr2.toArray 返回结果是一个定长数组,arr2本身没有变化。

import scala.collection.mutable.ArrayBuffer
 
object boke_demo01 {
 
  def main(args: Array[String]): Unit = {
 
    val arr2 = ArrayBuffer[Int]()
    // 追加值
    arr2.append(1, 2, 3)
    println(arr2)
 
    //说明
    //1. arr2.toArray 调用 arr2的方法 toArray
    //2. 将 ArrayBuffer ---> Array
    //3. arr2本身没有任何变化
    val newArr = arr2.toArray
    println(newArr)
 
    //说明
    //1. newArr.toBuffer 是把 Array->ArrayBuffer
    //2. 底层的实现
    /*
     override def toBuffer[A1 >: A]: mutable.Buffer[A1] = {
    val result = new mutable.ArrayBuffer[A1](size)
    copyToBuffer(result)
    result
  }
     */
    //3. newArr本身没变化
    val newArr2 = newArr.toBuffer
    newArr2.append(123)
    println(newArr2)
 
  }
}

B.Scala数组转Java的List

import scala.collection.mutable.ArrayBuffer
 
object boke_demo01 {
 
  def main(args: Array[String]): Unit = {
     
    // Scala集合和Java集合互相转换
    val arr = ArrayBuffer("1", "2", "3")
    /*
    implicit def bufferAsJavaList[A](b : scala.collection.mutable.Buffer[A]) : java.util.List[A] = { /* compiled code */ }
     */
    import scala.collection.JavaConversions.bufferAsJavaList
    //对象 ProcessBuilder , 因为 这里使用到上面的  bufferAsJavaList
    val javaArr = new ProcessBuilder(arr) //为什么可以这样使用?
    // 这里arrList 就是java中的List
    val arrList = javaArr.command()
 
    println(arrList) //输出 [1, 2, 3]
 
  }
}

C.Java的List转Scala数组

//java的List 转成 scala的 ArrayBuffer
   //说明
   //1. asScalaBuffer 是一个隐式函数
   /*
   implicit def asScalaBuffer[A](l : java.util.List[A]) : scala.collection.mutable.Buffer[A] = { /* compiled code */ }
    */
   import scala.collection.JavaConversions.asScalaBuffer
   import scala.collection.mutable
   // java.util.List ==> Buffer
   val scalaArr: mutable.Buffer[String] = arrList
   scalaArr.append("jack")
   scalaArr.append("tom")
   scalaArr.remove(0)
   println(scalaArr) // (2,3,jack,tom)

————Blueicex 2020/2/15 18:06 blueice1980@126.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值