[英]Java: split a list of Dates in sublists that rappresent ranges of days from original lists
我有一個日期列表(或從joda時間開始的DateMidnight),在這里我將類似日期dd / MM / yyyy的日期重復出現,例如:
[01/01/2010,02/01/2010,03/01/2010,05/01/2010,10/01/2010,11/01/2010,22/01/2010,23/01/2010,24 / 01/2010]
我想從該列表中獲得另一個列表,其中包含一些子列表,這些子列表代表了原始列表中連續幾天的范圍,例如:
[[01/01/2010,03/01/2010],[05/01 / 2010、05 / 01/2010],[10/01 / 2010、11 / 01/2010],[22/01/2010, [24/01/2010]]
我怎樣才能做到這一點 ?
謝謝
addAll
這些列表添加到TreeSet
; 這將使列表項變得唯一並對其進行排序。
然后將subList
初始化為一個空列表並遍歷該Set。
如果子列表不為空且日期不連續,則將您的子列表轉儲到另一個列表,並以新的空子列表開始。
當您跳出循環時,如果子列表不為空,則這是您要添加到列表列表中的最后一個列表。
細化。
嚴格來說,您的超級集合不需要包含每個子范圍的日期列表。 您可以優化並簡單地存儲包含開始日期和結束日期的對象。
另一個優化:您存儲的子列表也不需要包含所有單獨的日期。 同樣,開始日期和結束日期也可以。
我建議您建立一個名為DateRange的類,其中包含兩個日期。
假設您的清單中有偶數個日期
List dateList = //contains the dates
Collections.sort(dateList);
List result = new ... // to store the list of intervals
for(int i=0; i<dateList.size-1; i+=2) {
List interval = new ...// to store one interval
interval.add(dateList.get(i));
interval.add(dateList.get(i+1));
result.add(interval)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.