将 Java 集合转换为 Scala 集合

新手上路,请多包涵

与 Stack Overflow 问题 Scala equivalent of new HashSet(Collection) 相关,如何将 Java 集合( java.util.List 说)转换为 Scala 集合 List

我实际上正在尝试将 Java API 调用转换为 Spring 的 SimpleJdbcTemplate ,它返回 java.util.List<T> ,转换为 Scala 不可变 HashSet 例如:

 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( ... ) ) : _ *)

原文由 oxbow_lakes 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 582
2 个回答

您最后的建议有效,但您也可以避免使用 jcl.Buffer

 Set(javaApi.query(...).toArray: _*)

请注意,由于 scala.collection.immutable.Set ,默认情况下 Predef.scala 可用。

原文由 Jorge Ortiz 发布,翻译遵循 CC BY-SA 3.0 许可协议

供将来参考:使用 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 的答案 以获得更明确的方式(使用 JavaConverters),现在似乎推荐这种方式。

原文由 robinst 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题