我正在编写一个程序来按日期对日期时间进行排序。 有一个日期时间开始和一个日期时间结束。 它们根据用户输入放入自己的对象中。 DateTime 开始和 DateTime 结束组成自己的术语。 因此,每个术语都有一个自己的对象,其中包含日期时间开始和日期时间结束。
我想要做的是将所有 DateTime 开头和所有 DateTime 结尾按日期排序。 我怎样才能做到这一点?我正在考虑一个比较器,但我似乎无法在自定义对象上执行此操作。
假设用户输入一个开始日期 01/01/2000
和一个结束日期 01/01/2002
。这组成了一个术语。
然后,用户输入由开始日期 01/01/2001
和结束日期 01/01/2003
组成的第二个术语。
我现在想做的是对日期进行排序并创建三个新术语:
beginning 01/01/2000 end 01/01/2001
beginning 01/01/2001 end 01/01/2002
beginning 01/01/2002 end 01/01/2003
我不知道如何继续下去,有什么想法吗?
最佳答案
将每个日期放入一个新集合中,按日期对其进行排序,然后创建包含集合中相邻日期的新对象。
尝试:
public static void main(String[] args) {
List<YourClass> list = new ArrayList<>();
list.add(new YourClass(new Date(100000000), new Date(200000000)));
list.add(new YourClass(new Date(150000000), new Date(250000000)));
list.add(new YourClass(new Date(50000000), new Date(300000000)));
System.out.println(list);
List<Date> dates = new ArrayList<>();
for (YourClass yc : list){
if (!dates.contains(yc.beginning)) dates.add(yc.beginning);
if (!dates.contains(yc.end)) dates.add(yc.end);
}
Collections.sort(dates);
List<YourClass> list2 = new ArrayList<>();
for (int i=0; i < dates.size() -1; i++){
list2.add(new YourClass(dates.get(i), dates.get(i+1)));
}
System.out.println(list2);
}
public static class YourClass {
Date beginning;
Date end;
public YourClass(Date beginning, Date end) {
this.beginning = beginning;
this.end = end;
}
@Override
public String toString() {
return "\n" + beginning + " -> " + end ;
}
}
关于java - 如何比较实例化的 DateTime 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53284130/