当前位置: 首页 > 知识库问答 >
问题:

将Java数组转换为Scala集合

翟沈义
2023-03-14

我想在Scala中映射Java数组。对于普通的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集合、iterable或可以映射的对象呢?

共有2个答案

向泽语
2023-03-14

A我刚找到它:

Locale.getAvailableLocales.to[Seq]

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

尹冠宇
2023-03-14

无需导入任何隐式转换,map就可以通过Java数组使用。尝试在Scala shell中运行以下命令:

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

隐式转换允许在Java数组上使用诸如mapfilter之类的函数,它附带了隐式导入的Predef

正如您在自己的回答中提到的,您还可以显式地将数组转换为另一个集合(这是可能的,这要感谢我前面提到的隐式转换)。

 类似资料:
  • 问题内容: 问题 与新HashSet(Collection)等效的Scala)相关,如何将Java集合(例如)转换为Scala集合? 我实际上是在尝试将Java API调用转换为Spring的 (返回a )成Scala不可变。因此,例如: 这似乎有效。欢迎批评! 问题答案: 您的最后一条建议有效,但您也可以避免使用: 请注意,默认情况下,由于提供了此功能。

  • 本文向大家介绍Scala将Scala集合转换为Java集合,反之亦然,包括了Scala将Scala集合转换为Java集合,反之亦然的使用技巧和注意事项,需要的朋友参考一下 示例 当您需要将集合传递到Java方法中时: 如果Java代码返回Java集合,则可以通过类似的方式将其转换为Scala集合: 请注意,这些是装饰器,因此它们仅将基础集合包装在Scala或Java集合接口中。因此,通话.asJa

  • 现有两个名为getDetails(…)的方法 。一个需要至少一个必需参数,另一个需要一个集合(不验证集合的内容/大小)。 问题是集合有时会作为空传递,并且根据我的业务案例,我总是期望至少传递一个值。因此,我需要将该方法设为私有,它接受集合。 我计划将下面的方法作用域设置为private,这样调用者就不会使用零属性调用此方法。 调用方方法之一是将集合对象传递给下面的getDetails, id.ge

  • 我有一个带有对象的数组()。对象包含一个 orgId 和一个 orgName。 有没有一种简便的方法可以将它转换成< code>Map[Long,String] (orgId,orgName)

  • Set似乎是一种创建具有保证唯一元素的数组的好方法,但它不提供任何获取属性的好方法,除了generator[Set].values,它以的尴尬方式调用。 如果您可以在集合上调用和类似的函数,那么这是可以的。但你也不能那样做。 我尝试过,但似乎只转换了类数组(NodeList和TypedArrays?)对象设置为数组。再试一次:对Sets不起作用,set.prototype没有类似的静态方法。 那么

  • 运行代码时,出现以下错误: 导致的代码是: 但当我这样做时: 我得到以下输出: [1,7,15] 我不明白为什么我不能将其转换为整数[]。有什么建议吗?