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来实现的参数多态)的知识点

相关文章
|
6月前
|
Java API 微服务
2025 年 Java 从入门到精通学习笔记全新版
《Java学习笔记:从入门到精通(2025更新版)》是一本全面覆盖Java开发核心技能的指南,适合零基础到高级开发者。内容包括Java基础(如开发环境配置、核心语法增强)、面向对象编程(密封类、接口增强)、进阶技术(虚拟线程、结构化并发、向量API)、实用类库与框架(HTTP客户端、Spring Boot)、微服务与云原生(容器化、Kubernetes)、响应式编程(Reactor、WebFlux)、函数式编程(Stream API)、测试技术(JUnit 5、Mockito)、数据持久化(JPA、R2DBC)以及实战项目(Todo应用)。
389 5
|
3月前
|
小程序 Java 知识图谱
Java 学习笔记 —— BMI & BMR 计算器
这是一个使用 Java 编写的 BMI 与 BMR 计算器小程序,可输入年龄、性别、身高和体重,计算身体质量指数(BMI)和基础代谢率(BMR),并输出健康评估结果。通过该项目,掌握了 Java 的输入处理、数据验证、条件判断、数学运算及格式化输出等基础知识,是 Java 初学者的理想练习项目。
|
3月前
|
Java
Java 数组学习笔记
本文整理Java数组常用操作:遍历、求和、查找、最值及二维数组行求和等典型练习,涵盖静态初始化、元素翻倍、去极值求平均等实例,帮助掌握数组基础与应用。
|
9月前
|
存储 Java
# 【Java全栈学习笔记-U1-day02】变量+数据类型+运算符
本篇笔记主要围绕Java全栈学习的第二天内容展开,涵盖了变量、数据类型、运算符以及Scanner类的应用。首先介绍了变量的概念与命名规范,以及如何定义和使用变量;接着详细讲解了Java中的基本数据类型,包括整型、浮点型、字符型、布尔型等,并通过实例演示了数据类型的运用。随后,深入探讨了各类运算符(赋值、算术、关系、逻辑)及其优先级,帮助理解表达式的构成。最后,介绍了如何利用Scanner类实现用户输入功能,并通过多个综合示例(如计算圆面积、购物打折、变量交换及银行利息计算)巩固所学知识。完成相关作业将进一步加深对这些基础概念的理解与实践能力。
186 13
|
9月前
|
人工智能 Java
Java 中数组Array和列表List的转换
本文介绍了数组与列表之间的相互转换方法,主要包括三部分:1)使用`Collections.addAll()`方法将数组转为列表,适用于引用类型,效率较高;2)通过`new ArrayList<>()`构造器结合`Arrays.asList()`实现类似功能;3)利用JDK8的`Stream`流式计算,支持基本数据类型数组的转换。此外,还详细讲解了列表转数组的方法,如借助`Stream`实现不同类型数组间的转换,并附带代码示例与执行结果,帮助读者深入理解两种数据结构的互转技巧。
654 1
Java 中数组Array和列表List的转换
|
9月前
|
开发框架 Java 开发工具
【Java全栈学习笔记-U1-day01】Java介绍
本笔记整理了Java学习的基础内容,涵盖程序理解、Java语言特性、JDK安装与配置、Java程序开发工具及编写步骤。重点介绍了Java程序的基本结构、编译和运行过程,以及输出语句的使用。通过实例演示了IDEA创建Java程序的方法,并强调了编码规范和注意事项。适合初学者复习和交流学习。 主要内容: 1. 理解程序:计算机组成、程序定义。 2. 简介:Java语言特点、技术平台、JDK作用。 3. 编写Java程序:编写、编译、运行步骤,基本结构。 4. 输出语句 5. DEA使用:新建工程、保存位置、文件介绍、新建类。 6. 扩展:注释、代码规范、大小写敏感、缩进等。
|
安全 Java 程序员
深入Java集合框架:解密List的Fail-Fast与Fail-Safe机制
本文介绍了 Java 中 List 的遍历和删除操作,重点讨论了快速失败(fail-fast)和安全失败(fail-safe)机制。通过普通 for 循环、迭代器和 foreach 循环的对比,详细解释了各种方法的优缺点及适用场景,特别是在多线程环境下的表现。最后推荐了适合高并发场景的 fail-safe 容器,如 CopyOnWriteArrayList 和 ConcurrentHashMap。
277 5
|
Java 程序员 编译器
Java|如何正确地在遍历 List 时删除元素
从源码分析如何正确地在遍历 List 时删除元素。为什么有的写法会导致异常,而另一些不会。
392 3
|
Java 程序员
Java|List.subList 踩坑小记
不应该仅凭印象和猜测,就开始使用一个方法,至少花一分钟认真读完它的官方注释文档。
277 1
|
Java 数据库连接 API
Spring 框架的介绍(Java EE 学习笔记02)
Spring是一个由Rod Johnson开发的轻量级Java SE/EE一站式开源框架,旨在解决Java EE应用中的多种问题。它采用非侵入式设计,通过IoC和AOP技术简化了Java应用的开发流程,降低了组件间的耦合度,支持事务管理和多种框架的无缝集成,极大提升了开发效率和代码质量。Spring 5引入了响应式编程等新特性,进一步增强了框架的功能性和灵活性。
258 0