假设我有一个joda时间间隔序列:
Seq(
Interval(00, 01),
Interval(01, 02),
Interval(02, 04),
Interval(04, 06),
Interval(07, 09), // continuous sequence is broken
Interval(09, 10),
Interval(11, 14), // continuous sequence is broken
Interval(15, 20), // continuous sequence is broken
Interval(20, 24)
)
我想要查看这个序列,然后返回一个Seq [Seq [Interval]],它给出了连续的序列和非连续的序列,如:
Seq(
Seq(Interval(00,01),Interval(01,02),Interval(02,04)Interval(04,06)),
Seq(Interval(07,09),Interval(09,10)),
Seq(Interval(11,14)),
Seq(Interval(15,20),Interval(20,24))
)
我确实提出了一些递归,但它只是在发现一个非连续的间隔之后切断了!有线索吗?
2 回答
我相信这是foldLeft的候选人 . 随着时间的推移迭代 Build 所需结构的时间间隔 . 我发现将新项添加到seq的头部更容易,因此最后使用reverse:
生产环境 :
编辑:
替代使用模式匹配:
我建议使用foldLeft和Vectors来累积结果 . 因为我发现它更具可读性,附加值而不是前置然后反转所有内容:
为了使结果更具可读性,我添加了以下内容:
输出是: