scala中的Array、List和ArrayList、ListBuffer

在这里插入图片描述
Scala中的List是不可变的递归数据(immutable recursive data),是Scala中的一种基础结构,你应该多用List而不是Array(Array实际上是mutable,不可变(immutable)的Array是IndexedSeq)
Mutable Structures ListBuffer提供一个常数时间的转换到List。一个Scala的Array应该是由Java array生成的。

  • ListBuffer
import scala.collection.mutable.ListBuffer

val lst0 = ListBuffer[Int](1, 2, 3)
//动态的增加元素,lst1就会变化, 增加一个一个的元素
val lst1 = new ListBuffer[Int] //空的ListBuffer
lst1 += 4 // lst1 (4)
lst1.append(5) // list1(4,5)

lst0 ++= lst1 // lst0 (1, 2, 3,4,5)

println("lst0=" + lst0)


val lst2 = lst0 ++ lst1 // lst2(1, 2, 3,4,5,4,5)
println("lst0=" + lst0)
println("lst2=" + lst2)

val lst3 = lst0 :+ 5 // lst0 不变 lst3(1, 2, 3,4,5,5)
println("lst3=" + lst3)
  • ArrayBuffer
import scala.collection.mutable.ArrayBuffer

val arrayBuffer = ArrayBuffer[Any](2,3,"beijing")
println(arrayBuffer(2))
// 增
arrayBuffer.append(5, 6)

// 删
arrayBuffer.remove(0)

相互转换

  • 1 Array和List
    使用toList、toArray相互转换:
scala> Array(1,2,3).toList

res14: List[Int] = List(1, 2, 3)


scala> List(1,2,3).toArray

res15: Array[Int] = Array(1, 2, 3)
  • 2 定长数组和变长数组的转换
    使用toArray、toBuffer相互转换:
val arrayBuffer = ArrayBuffer(1,2,"beijing")
    val array = arrayBuffer.toArray
    println(array.hashCode(), arrayBuffer.hashCode())
    println("遍历不可变数组")
    for (item <- array) {
      println(item)
    }

    val mutableArray = array.toBuffer
    mutableArray.append(3)
    println("遍历mutableArray")
    for (item <- mutableArray) {
      println(item)
    }

    println("遍历arrayBuffer")
    for (item <- arrayBuffer) {
      println(item)
    }
  • 3 Java数组(List)和Scala数组(ArrayBuffer)的互转

    Scala->Java

//创建了ArrayBuffer
val arr = ArrayBuffer("1", "2", "3")

//下面的import 引入了我们需要的隐式函数【这里就是隐式函数的应用】
//implicit def bufferAsJavaList[A](b : scala.collection.mutable.Buffer[A]) : java.util.List[A]
import scala.collection.JavaConversions.bufferAsJavaList

// 触发隐式转换
val javaArr = new ProcessBuilder(arr)

//返回的是 List<String>
val arrList = javaArr.command()

println(arrList) //输出 [1, 2, 3]

Java->Scala
val arrList = new java.util.ArrayList[String]()

import scala.collection.JavaConversions.asScalaBuffer
import scala.collection.mutable
// java.util.List ==> Buffer
val scalaArr: mutable.Buffer[String] = arrList
scalaArr.append("2")
scalaArr.append("3")
scalaArr.append("jack")
scalaArr.append("tom")
println(scalaArr)
scalaArr.remove(0)
println(scalaArr) // (3,jack,tom)

参考:
https://www.jianshu.com/p/bdf90fc486ed
https://blog.youkuaiyun.com/mar_ljh/article/details/81910286

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值