首页 > 编程语言 >Java和scala集合互相转换

Java和scala集合互相转换

时间:2023-07-06 09:34:41浏览次数:41  
标签:java scala List collection util mutable 集合 Java

使用 scala.collection.JavaConverters 与Java集合交互。它有一系列的隐式转换,添加了asJava和asScala的转换方法。

import scala.collection.JavaConverters._
 
 val list: java.util.List[Int] = List(1,2,3,4).asJava
 val buffer: scala.collection.mutable.Buffer[Int] = list.asScala

以下集合可以进行任意,转换。但在某些情况下引入的隐式转换不正确或未引入,仍然无法进行正确转换,如API的例子

scala.collection.Iterable <=> java.lang.Iterable
scala.collection.Iterable <=> java.util.Collection
scala.collection.Iterator <=> java.util.{ Iterator, Enumeration }
scala.collection.mutable.Buffer <=> java.util.List
scala.collection.mutable.Set <=> java.util.Set
scala.collection.mutable.Map <=> java.util.{ Map, Dictionary }
scala.collection.concurrent.Map <=> java.util.concurrent.ConcurrentMap

总结下来就是:collection:可以指定元素排序规则:sort方法或继承comparable
scala.collection.Iterable <=> java.lang.{iterable,collection}
scala.collection.Iterator <=> java.util.{Iterator,Enumeration}

scala的Buffer对应就是java.util.List,不可直接使用,使用ListBuffer
scala.collection.mutable.Buffer <=> java.util.List
scala.collection.mutable.Set <=> java.util.Set
scala.collection.mutable.Map <=> java.util.{Map,Dictionary}

并发安全集合

scala.collection.concurrent.Map<=>java.util.concurrent.ConcurrentMap

以下为scala.collection.mutable.ListBuffer<=>java.util.List
除要求引入相应的转换类JavaConversions._,还有引入ListBuffer=>java.util.List 具体转换方法


如果出现了 Scala 和Java 集合转换时 java.lang.UnsupportedOperationException的异常
可能就是由于未能按照上面的规则正确转换导致的

标签:java,scala,List,collection,util,mutable,集合,Java
From: https://www.cnblogs.com/iullor/p/17531199.html

相关文章

  • java中的类型转换
    类型转换自动类型转换表达式自动类型转换强制类型转换 自动类型转换类型范围小的变量,可以直接赋值给类型范围大的变量。bytea=12;intb=a;System.out.println(b);//12 ......
  • java进阶3:GC 的背景与一般原理
    为什么会有GC其最本质的原因是因为内存资源的稀缺性。我们计算机最核心的资源是CPU和内存,CPU是随着计算机一直存在的东西,核数有限但是一直存在;但内存比较稀缺,A占满了,B就不能用了,我们怎么可以共享使用这个内存呢,这就是GC产生的原因了。背景:在传统的编程语言中,程序员需要手动分配和释......
  • java中的数据分类
     java中有两大类数据类型1引用数据类型2基本数据类型 引用数据类型如(除基本数据类型之外的,如String...)可以通过new关键字在堆内存中创建对象的在栈中引用的,都可以称为引用数据类型基本数据类型(四类八种)基本数据类型通常都在栈中用完就消失掉,也可......
  • Java IO主动同步数据到磁盘方式
    前言通过输出流的write方法可能只是会写到操作系统的缓冲区(pagecache)中,再由操作系统在合适的时机将缓冲区的数据同步到磁盘中。Linux提供了两个函数fsync()、fdatasync()来强制让操作系统将数据同步到磁盘,它们的区别是是否需要同步文件的元数据,如果访问时间,修改时间,文件大小等......
  • 阿里Java二面:说说Spring MVC执行流程及原理?这样聊能吊打面试官
    面试找虐博主之前每次去面试必问的问题:“讲一下springmvc的执行流程以及常用组件的作用”;记得第一次和面试官说了大概的流程是这样的:“服务器收到一个请求后会先去HandlerMapping中匹配url,找到url之后用HandlerAdapter适配器去执行这个控制器(controller层),执行完之后返回一个mo......
  • 阿里Java二面:说说Spring MVC执行流程及原理?这样聊能吊打面试官
    面试找虐博主之前每次去面试必问的问题:“讲一下springmvc的执行流程以及常用组件的作用”;记得第一次和面试官说了大概的流程是这样的:“服务器收到一个请求后会先去HandlerMapping中匹配url,找到url之后用HandlerAdapter适配器去执行这个控制器(controller层),执行完之后返回一个mode......
  • Java 方法的重载、可变参数、作用域
    Java方法的重载、可变参数、作用域1.方法的重载使用相同的方法名来定义不同的方法,方法的重载能优化代码,减少冗余度。在使用方法的重载需要注意的地方有:1.方法的重载需要方法名相同,并且形参类别、个数、顺序不同(满足其中之一)2.方法的重载与方法的返回类型、形参名没有关......
  • 从头学Java17-Stream API(二)结合Record、Optional
    StreamAPIStreamAPI是按照map/filter/reduce方法处理内存中数据的最佳工具。本系列教程由Record讲起,然后结合Optional,讨论collector的设计。使用Record对不可变数据进行建模Java语言为您提供了几种创建不可变类的方法。可能最直接的是创建一个包含final字段的final类。......
  • JavaScript(七)ES6
    Node环境安装nvm、npm、nrmnvm:管理多个版本的node环境,使用nvm安装nodejsnpm:npm是node的包管理工具,使用nvm安装node后,就可以使用npm命令nrm:管理npm的镜像源,使用npm命令安装Babel转码器可以将es6代码转成es5代码。从而可以在老版本浏览器执行在项目根目录下安装np......
  • 集合、Collection 接口、List接口
    集合、Collection接口、List接口集合的理解和好处前面,我们保存多个数据可以使用数组,但数组有不足的地方数组数组的长度创建时必须指定,而且一定指定,不能修改保存的必须为同一类型的元素使用数组进行增加/删除的代码比较麻烦Person[]pers=newPerson[1];pers[0]......