ArrayBuffer 转 Java 的 List | 学习笔记

简介: 快速学习 ArrayBuffer 转 Java 的 List

开发者学堂课程【Scala 核心编程 - 进阶ArrayBuffer 转 Java 的 List学习笔记,与课程紧密连接,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/610/detail/9028


ArrayBuffer 转 Java 的 List


内容介绍:

一、Scala 数组转 Java 的 List

二、补充知识


一、Scala 数组转 Java 的 List

Scala 可以调用 JAVA 里面的集合,在开发中由于历史的原因,Scala 的发展是基于JAVA 的,它底层的代码是一点点进行升级的,有的在1.0版本的时候运用的JAVA就比较多一些,等他升级了以后,但慢慢的 Scala 的部分就会越来越多,在其中可能会涉及到 Scala 和 JAVA 的调用

一旦把数组转成 list,再转成 JAVA 的其他类型,就比较容易了。Array 如果能够直接提供转换那就直接用,如果没有,那就把 array 先转成 ArrayBuffer 再转成其他,这条线就通了。

在项目开发中,有时我们需要将 Scala 数组转成 Java 数组,看下面案例:

//Scala 集合和 Java 集合互相转换

创建新的 Scala class,Name 为 ArrayBuffer2JavaList,Kind 为 Object

object ArrayBuffer23avaList {

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

bufferAsJavaList 进去显示 implicit def bufferAsJavaList[A](b : scala.collection.mutable.Buffer[A]): java.util.List[A] = {/*compiled code */ }

(此处用到隐式转换,bufferAsJavaList 是 implicit 的一个隐式函数,它可以接收scala.collection.mutable.Buffer 数据类型,可变的 buffer,联想相关的图,只要是 buffer 的子类,就可以传过去,返给 java.util.List)

//对象 ProcessBuiLder,此处用的是它本身的构造器,追进去发现它可以接收 list,它返回了一个 command,隐式转换可以将其转换过去,本身 ArrayBuffer 是转不过去的,但是提供了隐式函数之后就可以进行转换。隐式函数的出发点是参数类型不一致,这里做一个工作,是 ArrayBuffer 转成 List,因为这里使用到上面的bufferAsJavaList,它把 ArrayBuffer 转为 list 传入,主要目的是调用 command 返回一个 JAVALIST

val javaArr = new ProcessBuilder(arr)//为什么可以这样使用?

//这里 arrList 就是 java 中的 List

首先在这里输入 arrlist,command 返回一个 list

val arrList = javaArr.command()

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

原先是1,2,3,现在是 JAVA list[1,2,3]


二、补充知识

如果有一个 A 类,它继承了一个特质,这个A类的实例就可以传给Mytrat,在JAVA里面,如果一个类实现一个接口,就可以把这个类的实例传给接口的引用,这个地方也是一样的。

trait MyTrait01 {}

classA extends MyTrait01{}(A 继承了 Trait)

object B {

def test(m: MyTrait01): Unit ={(test 方法可以接受 MyTrait 引用)

println("b ok..")

}

}

//明确一个知识点

//当一个类继承了一个 trait

//那么该类的实例,就可以传递这个trait引用

//测试:

val a01 = new A(创建一个A对象)

B.test(a01)

补充了一个多态(使用trait来实现的参数多态)的知识点

相关文章
|
2月前
|
存储 安全 Java
【Java集合类面试二十五】、有哪些线程安全的List?
线程安全的List包括Vector、Collections.SynchronizedList和CopyOnWriteArrayList,其中CopyOnWriteArrayList通过复制底层数组实现写操作,提供了最优的线程安全性能。
|
2月前
|
Java
【Java集合类面试二十三】、List和Set有什么区别?
List和Set的主要区别在于List是一个有序且允许元素重复的集合,而Set是一个无序且元素不重复的集合。
|
2月前
|
存储 Java
Java学习笔记 List集合的定义、集合的遍历、迭代器的使用
Java学习笔记 List集合的定义、集合的遍历、迭代器的使用
|
22天前
|
存储 安全 Java
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(基础篇)
从Java环境的搭建到实际代码的编写,从基本用法的讲解到底层原理的剖析,深度解析Java基础知识。本文是《Java学习路线》专栏的起始文章,旨在提供一套完整的Java学习路线,覆盖Java基础知识、数据库、SSM/SpringBoot等框架、Redis/MQ等中间件、设计模式、架构设计、性能调优、源码解读、核心面试题等全面的知识点,并在未来不断更新和完善,帮助Java从业者在更短的时间内成长为高级开发。
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(基础篇)
|
22天前
|
存储 安全 Java
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(进阶篇)
本文是Java基础的进阶篇,对异常、集合、泛型、Java8新特性、I/O流等知识进行深入浅出的介绍,并附有对应的代码示例,重要的地方带有对性能、底层原理、源码的剖析。适合Java初学者。
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(进阶篇)
|
8天前
|
存储 JSON NoSQL
redis基本数据结构(String,Hash,Set,List,SortedSet)【学习笔记】
这篇文章是关于Redis基本数据结构的学习笔记,包括了String、Hash、Set、List和SortedSet的介绍和常用命令。文章解释了每种数据结构的特点和使用场景,并通过命令示例演示了如何在Redis中操作这些数据结构。此外,还提供了一些练习示例,帮助读者更好地理解和应用这些数据结构。
redis基本数据结构(String,Hash,Set,List,SortedSet)【学习笔记】
|
22天前
|
存储 安全 Java
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(高级篇)
本文是“Java学习路线”中Java基础知识的高级篇,主要对多线程和反射进行了深入浅出的介绍,在多线程部分,详细介绍了线程的概念、生命周期、多线程的线程安全、线程通信、线程同步,并对synchronized和Lock锁;反射部分对反射的特性、功能、优缺点、适用场景等进行了介绍。
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(高级篇)
|
2月前
|
Java 数据库
成功解决:java.sql.SQLSyntaxErrorException: Unknown column ‘origin_name‘ in ‘field list‘
这篇文章讲述了作者在使用SpringBoot和Mybatis-plus时遇到的一个数据库字段映射问题,即SQLSyntaxErrorException错误,原因是实体类字段和数据库字段不匹配。文章提供了两种解决方法:一是关闭自动驼峰命名转换配置,二是修改数据库字段以匹配实体类字段,最终成功解决了问题。
成功解决:java.sql.SQLSyntaxErrorException: Unknown column ‘origin_name‘ in ‘field list‘
|
2月前
|
Java
用JAVA架建List集合为树形结构的代码方法
这段代码定义了一个表示树形结构的 `Node` 类和一个用于构建树形结构的 `TreeController`。`Node` 类包含基本属性如 `id`、`pid`、`name` 和 `type`,以及子节点列表 `children`。`TreeController` 包含初始化节点列表并将其转换为树形结构的方法。通过过滤和分组操作实现树形结构的构建。详情可见:[代码示例链接1](http://www.zidongmutanji.com/zsjx/43551.html),[代码效果参考链接2](https://www.257342.com/sitemap/post.html)。
32 5
|
1月前
|
Java API 开发者
代码小妙招:用Java轻松获取List交集数据
在Java中获取两个 `List`的交集可以通过 `retainAll`方法和Java 8引入的流操作来实现。使用 `retainAll`方法更为直接,但会修改原始 `List`的内容。而使用流则提供了不修改原始 `List`、更为灵活的处理方式。开发者可以根据具体的需求和场景,选择最适合的方法来实现。了解和掌握这些方法,能够帮助开发者在实际开发中更高效地处理集合相关的问题。
29 1
下一篇
无影云桌面