Java和scala集合互相转换

使用 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的异常
可能就是由于未能按照上面的规则正确转换导致的

posted @   iullor  阅读(196)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
历史上的今天:
2022-07-06 MySQL、Oracle、PG 数据库、模式名、用户理解
点击右上角即可分享
微信分享提示