我有自定义对象包含Date,我动态创建并填充数据(名称,日期等等)并添加到列表中并在将所有对象添加到列表后我想根据日期对列表进行排序自定义对象(从LATEST到OLDEST)。 我如何用Java实现它?
请通过一些示例示例向我提供解决方案。
感谢。
答案 0 :(得分:1)
要查找2个日期之间的差异,您可以比较这些值。隐藏日期为值(长)而不是比较而不是使用算术运算,如减法等 公共类CompareObjects实现Comparator {
@Override
public int compare(classA c1, classA c2) {
long value1 = c1.getDate().getTime();
long value2 = c2.getDate().getTime();
if (value2 > value1) {
return 1;
} else if (value1 > value2) {
return -1;
} else {
return 0;
}
}
public static void main(String[] args) {
classA o1 = new classA();
o1.setDate(new Date());
classA o2 = new classA();
o2.setDate(new Date());
CompareObjects compare = new CompareObjects();
int i = compare.compare(o1, o2);
System.out.println(" Result : " + i);
}
}
或者不进行转换,您可以直接返回结果。
返回c2.getDate()。compareTo(c1.getDate());
比较后,您可以使用Collection.sort方法设置顺序。
答案 1 :(得分:0)
您需要实现自定义Comparator或实现Comparable。
有关详细信息,请参阅此处。
http://docs.oracle.com/javase/7/docs/api/java/util/Comparator.html
http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html
以下是使用其中任何一个的一些示例。
http://www.mkyong.com/java/java-object-sorting-example-comparable-and-comparator/
答案 2 :(得分:0)
答案 3 :(得分:0)
第一个位置为null,然后从最旧的到最新的:
Collections.sort(myList, new Comparator<MyBean>() {
public int compare(MyBean b1, MyBean b2) {
if (b1 == null || b1.getMyDate() == null) {
return -1;
}
if (b2 == null || b2.getMyDate() == null) {
return 1;
}
return b1.getMyDate().compareTo(b2.getMyDate());
}
});