【发布时间】:2014-12-18 01:29:02
【问题描述】:
我有一个 java 映射 stringMap,其中键是表示日期的字符串,值是长整数。我需要把这个map转成collection.mutable.HashMap[DateTime, Long],也就是除了改变map的类型,还要从Strings改成DateTimes。
这是我目前使用的解决方案:
import scala.collection.JavaConversions._
val df = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
val stringMap: java.util.HashMap[String, Long] = ...
val dateTimeMap = stringMap map { case (k, v) => (df.parseDateTime(k), v)}
val result = collection.mutable.HashMap[DateTime, Long](dateTimeMap.toArray:_*)
最后一行来自this post
注意有一个隐式转换将 stringMap 转换为 scala Hashmap。
问题是,有没有更好的方法来做到这一点?我尝试使用带有突破的 for yield / map 方法,但他们返回的是 Map 而不是 collection.mutable.HashMap 编辑:显然突破确实有效。
/编辑
最好有一种函数式编程方式来做到这一点,而不需要临时的dateTimeMap
【问题讨论】:
标签: scala type-conversion scala-collections