scala迭代列表的子集

时间:2018-03-26 08:35:30

标签: scala apache-spark arraylist iteration

我来自一个蟒蛇世界,做一些scala工作,有人帮助我。我有一个开始和结束日期,我创建了一个这样的日期列表,

isCheck: true;
    this.subscription = Observable.interval(10000).subscribe(x => {
      if (this.isCheck = true) {
        return this.getAllNotifications();
      } else {
        return false
      }

    });

但是,现在我需要对此进行迭代,但是每次迭代只需要列表元素的子集。

让我们说,我有一个这样的清单:

def dateRange(from: DateTime, to: DateTime, step: Period) : Iterator[DateTime] = {
  Iterator.iterate(from)(_.plus(step)).takeWhile(!_.isAfter(to))
}

val from = new DateTime().withYear(2012).withMonthOfYear(1).withDayOfMonth(1)
val to = new DateTime().withYear(2018).withMonthOfYear(2).withDayOfMonth(1)
val step = new Period().withDays(1)

// Getting the iterative date lists
val range = dateRange(from, to, step)
val dateList = range.toList

val dates = dateList.map { p => p.toString("yyyy-MM-dd") }

对于每次迭代,我需要发送3个日期。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

您可以使用:分组列表:

list.grouped(3).toList

这将为您提供List [List [T]]

例如,让我们考虑输入:

val list = List(1,2,3,4,5,6,7,8)

应用list.grouped(3).toList后,输出将为:

List(List(1,2,3),List(4,5,6), List(7,8))

迭代列表。这将做必要的