我想要我的數組進行排序,這一年是無關重要的月份和日期 是重要的。我想在索引0最接近的日期和最遠 日最後一次。
您需要進行排序依據的月份和日期第一:雖然比較任意兩個日期ঃ
首先排序的日期列表:
- 比較一個月,如果他們不相等的回報作爲比較結果的差值(month1 - month2)
- 如果月份相同,則返回當月的當日差異作爲比較結果
因此,一個實施Comparable<Date>
的compareTo(Date o)
功能會是什麼樣子:
@Override
public int compareTo(Date o) {
Calendar cal1 = Calendar.getInstance();
cal1.setTime(this.date);
Calendar cal2 = Calendar.getInstance();
cal2.setTime(o);
int month1 = cal1.get(Calendar.MONTH);
int month2 = cal2.get(Calendar.MONTH);
if(month1 < month2)
return -1;
else if(month1 == month2)
return cal1.get(Calendar.DAY_OF_MONTH) - cal2.get(Calendar.DAY_OF_MONTH);
else return 1;
}
排序,你簡直圓的清單後,認爲它是圓形的。例如,假設排序列表(不含一年,因爲它是不相關的):
JAN 20, FEB 5, SEP 18, OCT 9, OCT 20, NOV 23
如果我們的樞軸(的關閉日期比較的日期)爲OCT 11
選擇立即大(最小的日期比pivot大)日期它將是OCT 20
。你可以使用for循環找到它。現在,我們只需要一輪吧,讓它覺得是圓形:
OCT 20, NOV 23 --> JAN 20, FEB 5, SEP 18, OCT 9
形式上,立即找到更大的日期進行比較的我們的支點的基礎月份和日期(嘗試使用的compareTo例子)於指數i
,然後創建一個新列表中,插入從索引i
開始的元素到n-1
,然後0
到i-1
,這裏的n
是日期列表的大小。
執行比較,並使用比較()。你可以添加邏輯來忽略年份,只是檢查月份和日期。 – TheLostMind
好吧,讓我檢查一下。 – User3
你可以用''Days.daysBetween(date1,date2)'' – hbsrud