与堆栈溢出问题 相关,如何将Java集合(java.util.List say)转换为Scala集合List
实际上,我正在尝试将对Spring's SimpleJdbcTemplate的Java API调用转换为Scala不可变的HashSet,后者返回一个java.util.List<T>。举个例子:
val l: java.util.List[String] = javaApi.query( ... )
val s: HashSet[String] = //make a set from l这似乎是可行的。欢迎批评!
import scala.collection.immutable.Set
import scala.collection.jcl.Buffer
val s: scala.collection.Set[String] =
Set(Buffer(javaApi.query( ... ) ) : _ *)发布于 2009-03-24 07:51:55
最后一个建议是可行的,但是您也可以避免使用jcl.Buffer
Set(javaApi.query(...).toArray: _*)请注意,多亏了Predef.scala,scala.collection.immutable.Set在默认情况下可用。
发布于 2010-10-19 22:49:49
供将来参考:在Scala 2.8中,可以这样做:
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),这似乎是现在推荐的方式。
发布于 2011-06-15 19:11:22
如果您想要比robinst's answer中演示的JavaConversions更明确,可以使用JavaConverters:
import scala.collection.JavaConverters._
val l = new java.util.ArrayList[java.lang.String]
val s = l.asScala.toSethttps://stackoverflow.com/questions/674713
复制相似问题