开发者学堂课程【Scala 核心编程 - 进阶:Java 的 List 转 scala 的 Buffer】学习笔记,与课程紧密连接,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/610/detail/9029
Java 的 List 转 scala 的 Buffer
Java 的 List 转 Scala 数组(mutable.Buffer)
在项目开发中,有时需要将 Java 的 List 转成 Scala 数组,看下面案例:
假如说这里有一个 List,是 JAVA 的 list,先把它付给了一个 mutable.buffer,mutable.buffer 是 Arraybuffer 的父类,转完之后就可以 append 加上一些东西,里面也用到了一个隐式转换,是 JavaConversions 里面的方法是 asScalaBuffer。
Println(arrList)//输出[1,2,3]
/说明
/1. asscaLaBuffer 是一个隐式函数/ *
它的样子是:implicit def asscaLaBuffer[A](L : java.utiL.List[A]) : scala.coLLection.mutable .Buf fer[A] = i{/ * compiled code +/ }可以接收一个 List,把它转成 JAVA
collection 里面的 mutable的Buffer,这个 buffer 可以当成 ARRAYbuffer 来使用,这里面就用到了隐式函数的特点,此时它的应用场景跟刚才不一样,刚才是传参数时触发了隐式函数,而这个时候是赋值的时候触发了隐式函数,只要在范围内能找到函数就可以。
*/
现在研究的话题是 Java 的 list 转成 scala的Arraybuffer.
import scala.collection.JavaConversions.asScalaBuffer
import scala.collection.mutable
(引入一下)
//
java.util.List ==>Buffer
(变成了buffer类型的输出,append是支持的)
val scalaArr: mutable.Buffer[String] = arrList
(
arrList
赋给
mutable.Buffer
,
mutable.Buffer
是ArrayBuffer的父类)
scalaArr.append(""jack")
scalaArr.append("tom")
scalaArr.remove(0)假如以后有 JAVA 的 list 想要使用,想要转换也是可以的。这里remove 后面是0的话,原来的1就没有了。
printLn(scalaArr)
/
/
输出为
(2,3,jack ,tom)
}
运行结果如下:
D :
\
program
\
jdks\binljava[1,2,3]
ArrayBuffer(2, 3, jacik, tom)
Process finished with exit code
0
Scala 麻烦的部分就是它既有 Scala 又有 Java,同时有时候需要在二者之间进行转换,而且将来集合又用的很多。