Scala group by并从列表中查找最小值和最大值[String]

Scala group by并从列表中查找最小值和最大值[String],scala,Scala,我在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-3

我在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))
希望这能澄清我的疑问


谢谢,

假设您以列表[字符串]的形式传递数据

    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)
,您将获得列表形式的输出,如下所示

列表(2232018-04-22 10:15:302018-04-22 13:15:301232018-04-30 10:15:302018-04-30 12:22:30)


希望这能解决你的疑问

您好,它成功了,只需做一些编辑,因为我希望它能够根据日期进行分组,您的答案是给出总体最小值和最大值。总的来说,它起了作用。感谢您宝贵的时间和回复。接受你的回答。@Philantrover-什么不尝试?我不明白为什么这个问题离题了。在一些概念上我是新手,我相信Stackoverflow是一个用户可以提交查询并获得响应的平台。请不要投反对票,因为这会降低用户的积极性,相反,您可以帮助他了解他们在哪里犯了错误,以便他们能够充分利用这个精彩的平台。嗨!StackOverflow本质上是一个问答网站。尽管我们很想帮助您为您的问题提供解决方案,但如果您先向我们展示您试图实现的目标,我们会更容易。如果你点击我在上面的评论中提到的链接,你就会明白为什么如果问题中包含了尝试,事情会变得更容易。反对票并不是要削弱你的积极性。而且,我已经在我的评论中解释了为什么我会投反对票,以及这个问题有什么问题。我也推荐阅读和阅读。谢谢。@philantrovert-谢谢你的解释。但是我试着去做我被卡住了这就是为什么我想在这里提出一个问题。不管怎样,我被禁止提问。所以我想你不用再担心了。我希望能从这个平台学到更多。