首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Java集合转换为Scala集合

将Java集合转换为Scala集合
EN

Stack Overflow用户
提问于 2009-03-23 18:46:15
回答 9查看 80.3K关注 0票数 90

与堆栈溢出问题 相关,如何将Java集合(java.util.List say)转换为Scala集合List

实际上,我正在尝试将对Spring's SimpleJdbcTemplate的Java API调用转换为Scala不可变的HashSet,后者返回一个java.util.List<T>。举个例子:

代码语言:javascript
复制
val l: java.util.List[String] = javaApi.query( ... )
val s: HashSet[String] = //make a set from l

这似乎是可行的。欢迎批评!

代码语言:javascript
复制
import scala.collection.immutable.Set
import scala.collection.jcl.Buffer 
val s: scala.collection.Set[String] =
                      Set(Buffer(javaApi.query( ... ) ) : _ *)
EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2009-03-24 07:51:55

最后一个建议是可行的,但是您也可以避免使用jcl.Buffer

代码语言:javascript
复制
Set(javaApi.query(...).toArray: _*)

请注意,多亏了Predef.scalascala.collection.immutable.Set在默认情况下可用。

票数 17
EN

Stack Overflow用户

发布于 2010-10-19 22:49:49

供将来参考:在Scala 2.8中,可以这样做:

代码语言:javascript
复制
import scala.collection.JavaConversions._
val list = new java.util.ArrayList[String]()
list.add("test")
val set = list.toSet

在这之后,set就是scala.collection.immutable.Set[String]了。

另请参阅Ben James' answer以了解更明确的方式(使用JavaConverters),这似乎是现在推荐的方式。

票数 127
EN

Stack Overflow用户

发布于 2011-06-15 19:11:22

如果您想要比robinst's answer中演示的JavaConversions更明确,可以使用JavaConverters:

代码语言:javascript
复制
import scala.collection.JavaConverters._
val l = new java.util.ArrayList[java.lang.String]
val s = l.asScala.toSet
票数 62
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/674713

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档