给定此类的 Person
个 Person
个对象:
class Person(val id : Long, val name : String)
什么是"scala way"获取(java)HashMap与 id
为键和 name
为值?
如果最佳答案不包括使用 .map
,请提供一个示例,即使它更难做到 .
谢谢 .
编辑
这就是我现在所拥有的,但它不是一成不变的:
val map = new HashMap[Long, String]
personList.foreach { p => map.put(p.getId, p.getName) }
return map
2 回答
personList
的类型为List[Person]
..map
操作后,得到List[Tuple2[Long, String]]
(通常写为List[(Long, String)]
) .在
.toMap
之后,你得到Map[Long, String]
.和
.asJava
,顾名思义,将其转换为Java Map .您无需定义
.getName
,.getid
..name
和.id
已经是getter方法 . 类似访问的外观是有意的,遵循统一访问原则 .这个怎么样:
使用
personList
的大小在空HashMap
中预分配足够的条目,运行
foreach
循环,如果你需要不变性,
return java.collections.unmodifiableMap(map)
?此方法不会创建中间对象 . 当它被限制在一个本地对象时,可变状态是可以的 - 无论如何没有副作用:)
免责声明:我对Scala知之甚少,所以要小心谨慎 .