斯卡拉:排除一些日期

use*_*683 4 scala date

我有一个我想忽略的日期列表:

 private val excludeDates = List(
              new DateTime("2015-07-17"),
               new DateTime("2015-07-20"),
               new DateTime("2015-07-23")
              )
Run Code Online (Sandbox Code Playgroud)

但我总是需要显示四个日期,不包括我的黑色日期列表和周末.到目前为止,使用以下代码,当我点击一个被忽略的日期时,我的计数器会增加并且它会产生感觉.那么我怎么能跳到下一个日期,直到我在我的黑名单和我的周末中找到4个日期?也许有一段时间,但我不知道如何在我的scala代码中添加它:

1 to 4  map { endDate.minusDays(_)} diff excludeDates filter {
              _.getDayOfWeek() match {
                         case DateTimeConstants.SUNDAY |       DateTimeConstants.SATURDAY => false
                case _ => true
              }
            }
Run Code Online (Sandbox Code Playgroud)

Pet*_*ens 7

你可以使用Stream:

val blacklist = excludeDates.toSet

Stream.from(1)
      .map(endDate.minusDays(_))
      .filter(dt => ! blacklist.contains(dt))
      .take(4)
      .toList
Run Code Online (Sandbox Code Playgroud)

  • @ user708683只需更改过滤器功能,或在链中添加另一个过滤器.BTW` .filter(dt =>!blacklist.contains(dt))`可以简化为`.filterNot(blacklist)`. (3认同)