首页 > 解决方案 > 将 Scala Array[Object] 转换为 Map

问题描述

Array[Organisation]我有一个包含对象( )的数组。该Organisation对象包含一个longorgId 和一个stringorgName。

有没有一种方便的方法可以将其转换为Map[Long, String](orgId, orgName)

case class OrgRegistryConfig() {

  var organisations: Array[Organisation] = _

  def toMap() : Map[Long, String] = // How??
  // Output: Map( orgId as Long -> orgName as String )

}

object OrgRegistryConfig {
  case class Organisation() {
    var orgId: Long = _
    var orgName: String = _
  }
}

标签: scala

解决方案


organisations.map { o => o.orgId -> o.orgName }.toMap

^^应该这样做。

在相关说明中,除非您确定必须var使用它的确切原因,否则不要使用它(scala 中 95% 的情况下您不需要它,最好只是假装该关键字不存在,直到当你这样做时,你对语言有足够的掌握来区分那些罕见的情况),而且绝对不是在案例类中。

此外,不要在构造函数之外声明 case 类成员。并且不要创建没有参数的案例类。

case class OrgRegistryConfig(organizations: Array[Organization]) {
  def toMap = organizations.map { o => o.orgId -> o.orgName }.toMap
}

推荐阅读