基于时间戳值的 Scala Map 排序
Scala Map ordering based on Timestamp value
我正在尝试按时间戳降序排列我的值元组。我的密码是
import java.lang.{Double => JDouble}
def comparator(first: (Timestamp, JDouble), second: (Timestamp, JDouble)): Boolean = first._1.compareTo(second._1) < 1
val timeBoundContractRatesList: Map[String, List[(Timestamp, JDouble)]] = Map(
"ITABUS" -> List((Timestamp.valueOf("2021-08-30 23:59:59"), 0.8),
(Timestamp.valueOf("2021-09-30 23:59:59"), 0.9),
(Timestamp.valueOf("2021-07-30 23:59:59"), 0.7),
)
)
.map { case (key, valueTuple) => key -> valueTuple.sortWith(comparator) }.toMap
我的预期输出 timeBoundContractRatesList 的值应该按时间戳的降序排列,
Map(
"ITABUS" -> List((Timestamp.valueOf("2021-07-30 23:59:59"), 0.7),
(Timestamp.valueOf("2021-08-30 23:59:59"), 0.8),
(Timestamp.valueOf("2021-09-30 23:59:59"), 0.9),
)
)
但是,我无法使用显示数据类型不匹配错误的比较器函数。实现此输出的有效方法是什么?
您定义中的双打(例如 (Timestamp.valueOf("2021-09-30 23:59:59"), 0.9)
中)是 Scala 双打。
要么从比较器的签名中删除 JDouble,要么首先将双打转换为 JDoubles
我正在尝试按时间戳降序排列我的值元组。我的密码是
import java.lang.{Double => JDouble}
def comparator(first: (Timestamp, JDouble), second: (Timestamp, JDouble)): Boolean = first._1.compareTo(second._1) < 1
val timeBoundContractRatesList: Map[String, List[(Timestamp, JDouble)]] = Map(
"ITABUS" -> List((Timestamp.valueOf("2021-08-30 23:59:59"), 0.8),
(Timestamp.valueOf("2021-09-30 23:59:59"), 0.9),
(Timestamp.valueOf("2021-07-30 23:59:59"), 0.7),
)
)
.map { case (key, valueTuple) => key -> valueTuple.sortWith(comparator) }.toMap
我的预期输出 timeBoundContractRatesList 的值应该按时间戳的降序排列,
Map(
"ITABUS" -> List((Timestamp.valueOf("2021-07-30 23:59:59"), 0.7),
(Timestamp.valueOf("2021-08-30 23:59:59"), 0.8),
(Timestamp.valueOf("2021-09-30 23:59:59"), 0.9),
)
)
但是,我无法使用显示数据类型不匹配错误的比较器函数。实现此输出的有效方法是什么?
您定义中的双打(例如 (Timestamp.valueOf("2021-09-30 23:59:59"), 0.9)
中)是 Scala 双打。
要么从比较器的签名中删除 JDouble,要么首先将双打转换为 JDoubles