我遵循Scala中的值列表,并希望按这样的值进行分组,以便我可以获得每个特定日期的每个值的最小和最大时间戳: -
Console.ReadKey()
我希望输出为
val data = List( (123 , 2018-04-30 10:15:30),
(123 , 2018-04-30 11:15:30),
(123 , 2018-04-30 12:22:30),
(223 , 2018-04-22 10:15:30),
(223 , 2018-04-22 13:15:30))
希望这能澄清我的疑问
谢谢,
答案 0 :(得分:1)
让我们假设您以List [String]
的形式传递数据 val data = List(
("123 , 2018-04-30 10:15:30"),
("123 , 2018-04-30 11:15:30"),
("123 , 2018-04-30 12:22:30"),
("223 , 2018-04-22 10:15:30"),
("223 , 2018-04-22 13:15:30")
)
并且您的数据的日期始终采用yyyy-MM-dd HH:mm:ss
的形式,然后您可以创建一个函数来接收此列表作为输入并输出另一个列表,其中包含所需格式的数据。
您的功能如下
def func(data: List[String]): List[String] = {
val formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
data.map {
x =>
(x.split(",")(0), formatter.parse(x.split(",")(1)))
}.groupBy(_._1).map {
y =>
y._1 + " , " + formatter.format(y._2.map(_._2).min) + " , " + formatter.format(y._2.map(_._2).max)
}.toList
}
如果您调用函数func(data)
,您将获得列表表单中的输出
List(223 , 2018-04-22 10:15:30 , 2018-04-22 13:15:30, 123 , 2018-04-30 10:15:30 , 2018-04-30 12:22:30)
。
希望这能解决您的疑问!!!