You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Scala中获取今日与15天前所有Instant的等效实现方法

Scala生成今日至15天前所有Instant集合的等效实现

需求说明

需要获取从今日到今日减15天之间的所有Instant实例集合,已知Java的实现代码,求Scala的等效写法。

Java参考代码

Set<Instant> allPossibleDates =
    Stream.iterate(today, date -> date.minus(1, ChronoUnit.DAYS))
          .limit(numDates)
          .collect(Collectors.toSet());

Scala等效实现

方式一:使用LazyList(对应Java Stream.iterate逻辑)

import java.time.{ChronoUnit, Instant}

val today = Instant.now()
val numDates = 15

val allPossibleDates: Set[Instant] = 
  LazyList.iterate(today)(_.minus(1, ChronoUnit.DAYS))
          .take(numDates)
          .toSet
  • LazyList.iterate和Java的Stream.iterate逻辑一致:从初始值today开始,每次生成前一天的Instant
  • take(numDates)对应Java的limit(numDates),截取前15个元素
  • toSet直接将懒加载列表转换为集合,等效于Java的collect(Collectors.toSet())

方式二:使用Range+Map(更简洁直观)

import java.time.{ChronoUnit, Instant}

val today = Instant.now()
val numDates = 15

val allPossibleDates: Set[Instant] = 
  (0 until numDates).map(days => today.minus(days, ChronoUnit.DAYS)).toSet
  • 0 until numDates生成0到14的整数序列,每个数值代表从今日往前推的天数
  • 通过map将每个天数转换为对应的Instant实例,最后转成集合

内容的提问来源于stack exchange,提问作者Mikasa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 03:05:30