Possible JSR-310 (date/time API) stream methods

Stephen Colebourne scolebourne at joda.org
Thu Mar 7 11:57:27 PST 2013


This is a call for opinions as to whether JSR-310 should think about
adding stream-based methods.

It seems that the most likely use case is a stream of dates in a
range, either sequential or according to some rule. We already have a
"some rule" type concept in TemporalAdjuster, but that is general,
rather than LocalDate specific, so I've looked at UnaryOperator. One
possible pair of methods would be:

 // methods on LocalDate
 public Stream<LocalDate> datesUntil(LocalDate endDate) {
   return datesUntil(endDate, d -> d.plusDays(1));
 }
 public Stream<LocalDate> datesUntil(LocalDate endDate,
UnaryOperator<LocalDate> generator) {
   // some code to generate a stream checking for being beyond the end date
   // initial perusal suggests this might be a little complex...
 }

 // user code
startDate.datesUntil(endDate, d -> d.plusWeeks(1));
startDate.datesUntil(endDate, d -> d.with(nextHoliday()));

Does the basic stream library support this kind of stuff without
JSR-310 needing to do it?
Does this look useful, or are there other/alternative more useful methods?
Should it only be for dates, or other objects like LocalDateTime or
ZonedDateTime?
Would it justify its place in the library given users could just write
a for loop?
Any other thoughts?

BTW, the following code wouldn't work as the user expects:
 startDate.datesUntil(endDate, d -> d.plusMonths(1));
(Jan31 + 1 month = Feb28 ... Feb28 + 1 month = March28!!)

Stephen


More information about the lambda-dev mailing list