2014-09-10 33 views
-1

我有一天,一個月的課。我插入隨機日期,我排序後它看起來像?爲什麼?比較沒有排序我的課程日期

  • 1/9
  • 2/9
  • 3/9
  • 7/9
  • 9/9
  • 10/9
  • 5/9
  • 11/9

我得到「ti我」從數據庫中獲取它,我返回數據的ArrayList 代碼:

public ArrayList<ClockModel> getDay(String workName){ 
     try { 
      open(); 
      ArrayList<ClockModel> list = new ArrayList<ClockModel>(); 
      Cursor c = null; 
      c = myDb.query(TABLE_DAY, null,"workName = ?", new String[] {workName}, null, null, null); 
      while (c.moveToNext()) { 
       Clock clock = new Clock(
         c.getInt(0), //id 
         c.getString(1),//workName 
         c.getInt(2), //dateDay 
         c.getInt(3),//dateMouth 
         c.getInt(4),//dateYear 
       ); 


       Collections.sort(list,dateCompare); 



       list.add(clock);   
      }  
      return list; 
     } catch (Exception e) { 
      return null; 
     }finally{ 
      close(); 
     } 
    } 





    Comparator<ClockModel> dateCompare = new Comparator<ClockModel>() { 

     @Override 
     public int compare(ClockModel o1, ClockModel o2) { 

      int dd1 = o1.getDateDay(); 
      int mm1 = o1.getDateMonth(); 

      int dd2 = o2.getDateDay(); 
      int mm2 = o2.getDateMonth(); 

      if (mm1 > mm2) { 
       return 1; 
      } else if (mm1 < mm2) { 
       return -1; 
      } else { // == 

       if (dd1 > dd2) { 
        return 1; 
       } else if (dd1 < dd2) { 
        return -1; 
       } else { 
        return 0; 
       } 
      } 
     } 
    }; 
+0

工作正常跟我。樣品運行http://ideone.com/ynNmrN – nem035 2014-09-10 20:53:09

+0

怎麼可能? – Matt 2014-09-10 20:56:30

回答

2

的比較方法看起來不錯。你確定錯誤在這裏嗎?如果它是你的類ClockModel,那麼我建議你仔細檢查它=)

而且順便說一句,您可以通過使用Integer.compare(INT,INT)這樣的簡化代碼:

Comparator<ClockModel> dateCompare = new Comparator<ClockModel>() { 

    @Override 
    public int compare(ClockModel o1, ClockModel o2) { 

     int monthCompare = Integer.compare(o1.getDateMonth(), o2.getDateMonth()); 
     int dayCompare = Integer.compare(o1.getDateDay(), o2.getDateDay()); 

     return (monthCompare != 0) ? monthCompare : dayCompare; 

    } 
} 
+0

如果我使用「ublic int比較」之後我需要做什麼? – Matt 2014-09-10 21:05:47

+0

+1:是的,他的錯誤不在給出的代碼中。另外,還有很好的改進建議。 – nem035 2014-09-10 21:11:25

+0

@Matt對不起,如果我困惑你。我只是想說,你可以簡化你已經編寫的匿名類Comparator 的比較方法。就像我以前說過的那樣,我很確定這個錯誤不在你的比較器中。 – antonpp 2014-09-10 21:15:38