scala - 将 Scala Array[Object] 转换为 Map
问题描述
Array[Organisation]
我有一个包含对象( )的数组。该Organisation
对象包含一个long
orgId 和一个string
orgName。
有没有一种方便的方法可以将其转换为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 = _
}
}
解决方案
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
}
推荐阅读
- java - 模型映射器在测试类上调用方法时获取空指针异常
- php - 在 Laravel 中生成随机文件
- c# - 如何通过 Kubernetes c# API 方法“WebSocketNamespacedPodExecAsync”执行带参数的命令?
- javascript - 比较日期数组以在 java-script 中以简单的方式检查日期重叠
- python - 在 Tkinter 条目中隐藏文本光标
- laravel - laravel-websockets 连接到没有 laravel-echo 的通道
- android - Listview 项目文本未显示完整
- c# - 如何在c#中将递归对象与其他递归对象映射
- java - Android 10:windowTranslucentStatus 使状态栏透明
- c# - 用户 ' 登录失败
'。使用托管标识使用 Azure 函数应用和 Azure SQL 服务时,令牌已过期