美文网首页
scala之Array和ArrayBuffer

scala之Array和ArrayBuffer

作者: 虚心若愚_b5c1 | 来源:发表于2020-01-08 15:29 被阅读0次

定长数组

定义数组
方式一

// 1.定义一个数组,10为数组大小
// 2.[Int]为数组类型
// 3.[Any]表示该数组可以存放任意类型
// 4.数组的访问时()而不是[]
val array = Array[Int](10)
array(1)

方式二

// 定义数组时,直接赋值
// 因为该数组给了整数和字符串,所以这个数组的泛型是Any
val array2 = Array(1,2,3, "xuwei")

变长数组

定义变长数组

类似于java的ArrayList,每append一次,底层会重新分配空间,进行扩容,内存地址会发生变化,也就会成为新的ArrayBuffer

// 1.定义一个变长数组
// 2.因为是变长数组,可以不指定length
val array = ArrayBuffer[Int]()

// 添加元素
array.append(1)

// 重新赋值
array(0) = 2

// 删除元素
array.remove(0)

定长数组和变长数组的转换

  1. arr2.toArray 可变数组转定长数组,返回结果是一个定长数组,arr2本身没有发生变化
  2. arr.toBuffer 定长数组转变长数组,返回结果是一个变长数组,arr本身没有发生变化
// 定义一个类型为Any的ArrayBuffer
val arr = ArrayBuffer[Any]()

// 添加元素
arr.append(1, 2, "xuwei")

arr.foreach(println)

// ArrayBuffer转为Array
val arr2 = arr.toArray
    
arr2.foreach(println)
    
// Array转变为ArrayBuffer
val buffer = arr2.toBuffer

scala的ArrayBuffer转java的List

// scala集合和java集合相互转换
val arr = ArrayBuffer[String]("a","b","c")

import scala.collection.JavaConversions.bufferAsJavaList

// 对象processBuilder,因为这里使用到上面的bufferAsJavaList
val builder = new ProcessBuilder(arr)

// javaArr就是java中的ArrayList
val javaArr = builder.command()

java的list转scala的ArrayBuffer

// java的集合转scala的ArrayBuffer
val scalaArr : mutable.Buffer[String] = javaArr

scalaArr.append("e")

相关文章

网友评论

      本文标题:scala之Array和ArrayBuffer

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