我在 Scala 中遵循了值列表,并希望按这些值进行分组,以便我可以获取每个特定日期每个值的最小和最大时间戳:-
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))
我希望输出为
List((123, 2018-04-30, 2018-04-30 10:15:30 , 2018-04-30 12:22:30),
(223, 2018-04-22, 2018-04-22 10:15:30 , 2018-04-30 13:15:30))
希望这能澄清我的疑问
谢谢
假设您以 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)
.
希望这能解决您的查询!!