2010-01-11 38 views
1

我有一個對象的arraylist,每個包含年/月/日/小時屬性。我最終試圖做的是創建一個新的多維數組,其中包含一組每個對象,通過遞增小時。因此,舉例來說,最終的陣列我會想的一個例子是:sort arraylist在升序

array: [0] 
      [0] 01:04:00, 4-10-09 
      [1] 01:15:00, 4-10-09 
     [1] 
      [0] 02:25:00, 4-10-09 
     [2] 
      [0] 06:14:00, 4-10-09 
      [1] 06:27:00, 4-10-09 
     [3] 
      [0] 04:03:00, 4-11-09 
      [1] 04:11:00, 4-11-09 

我遇到困難的時候搞清楚雖然正確地排序在Java中的ArrayList。我怎樣才能按照升序排列數組列表中的每個部分(年,月,日,小時),然後將它們插入最終數組中?

謝謝。

回答

2

排序集合,你可以做這樣一個電話:

List<MyDate> dates = ... 
Collections.sort(dates); 

的指明MyDate類需要實現該接口可比WH ich將要求實施「int compareTo(object o)」方法。

在「compareTo」方法中,您可以編寫將調用年份,月份等的getters的代碼,直到找出當前對象是小於,等於還是大於該對象將「o」傳遞給compareTo方法。

例子:

public int compareTo(Object o) { 
    MyDate otherDate = (MyDate) o; 
    int thisYear = this.getYear(); 
    int otherYear = otherDate.getYear(); 
    if (thisYear < otherYear) return -1; 
    if (thisYear > otherYear) return 1; 
    // Now try the month, then day etc 
} 
+0

工作就像一個魅力。謝謝! – minimalpop 2010-01-12 00:17:52

0

實現你的時間/日期對象的可比性接口。然後它就像做Collections.sort一樣簡單