dro*_*ter 1 java sorting date comparator
我正试图按发布日期对专辑进行排序.出于某种原因,我无法到达任何地方:
//sort by release date
Collections.sort(this._items, new Comparator<Album>() {
public int compare(Album t1, Album t2) {
int dateCmp = t2.getStartDate().compareTo(t1.getStartDate());
Log.i("==Albums==", "dateComp: " + dateCmp);
return t1.getStartDate().compareTo(t2.getStartDate());
}
});
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
这是我在发布日期的Foo Fighters Albums输出中看到的内容:
name: There Is Nothing Left To Lose | release date: 11/2/1999
name: Greatest Hits | release date: 11/3/2009
name: Skin And Bones | release date: 11/7/2006
name: Foo Fighters | release date: 12/10/2003
name: DOA | release date: 12/13/2005
name: Rope | release date: 3/1/2011
name: The Colour And The Shape | release date: 3/30/2010
Run Code Online (Sandbox Code Playgroud)
它看起来像你的startDate
领域是类型java.lang.String
.至少,输出中的顺序证实了这一点.的String#compareTo()
意愿命令String
值按字典顺序,而不是由值它代表了旁观者的眼睛.
如果你改变不正确的类型为java.util.Date
,或使用SimpleDateFormat#parse()
该转换String
到Date
里面compare()
方法,然后调用Date#compareTo()
代替,那么排序将正常工作.
我会替换它java.util.Date
.始终使用正确的类型表示它所代表的值.