gpt4 book ai didi

java - 如何按日期字段对集合进行排序?

转载 作者:行者123 更新时间:2023-11-29 06:44:38 28 4
gpt4 key购买 nike

我正在尝试按发行日期对专辑进行排序。由于某种原因,我没有到达任何地方:

//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());
}
});

我做错了什么?

这是我在 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

最佳答案

看起来您的 startDate 字段的类型是 java.lang.String .至少,输出中的顺序证实了这一点。 String#compareTo()将按字典顺序对 String 值进行排序,而不是根据它在旁观者眼中所代表的值。

如果将不正确的类型更改为 java.util.Date , 或使用 SimpleDateFormat#parse()compare() 方法中将 String 转换为 Date,然后调用 Date#compareTo()相反,那么排序将按预期工作。

我会将其替换为 java.util.Date。始终为其所代表的值使用正确的类型。

关于java - 如何按日期字段对集合进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7197548/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com