将Java数组转换为Scala集合

时间:2016-08-03 12:53:47

标签: java scala

我想在Scala中的Java数组上map。对于普通的Java集合,我知道我可以使用

import scala.collection.JavaConverters._

new java.util.ArrayList[Int](1).asScala.map(_.toString)

但是,对于数组,此转换不起作用:

import scala.collection.JavaConverters._

java.util.Locale.getAvailableLocales.asScala // doesn't compile

那么如何将Java数组转换为Scala集合或可迭代或我可以映射的内容?

2 个答案:

答案 0 :(得分:4)

我刚刚发现它:

Locale.getAvailableLocales.to[Seq]

不需要任何隐式转换器或任何东西。

答案 1 :(得分:4)

您不必导入任何通过Java阵列可用的map隐式转换。尝试在Scala shell中运行以下命令:

java.util.Locale.getAvailableLocales.map(_.toString)

允许使用mapfilter等使用函数而不是Java数组的隐式转换带有Predef,它是隐式导入的。

正如您在自己的回答中提到的,您还可以将Array显式转换为另一个集合(这可能归功于我之前提到的隐式转换)。