Java 按日期排序需要做什么?

Java 按日期排序需要做什么?,java,Java,我需要按日期对状态报告进行排序。在调用addItem方法之前,应该进行排序,否则必须按报告日期与以前的报告进行比较。需要说明的是,可以使用getReportDate()[类型为JVDate]方法获取状态报告的报告日期。请您帮助对状态报告进行排序: public void doImport( TRDataReader in ) throws IOException, TRException { in.start( getClassTag

我需要按日期对状态报告进行排序。在调用addItem方法之前,应该进行排序,否则必须按报告日期与以前的报告进行比较。需要说明的是,可以使用getReportDate()[类型为JVDate]方法获取状态报告的报告日期。请您帮助对状态报告进行排序:

   public void  doImport( TRDataReader in )
        throws IOException, TRException        
   {

       in.start( getClassTag() ); // get the class tag
       // import the set's flags from a datareader
       importFlags( in ); 
       beginLoad ();
       final String restag = new TRStatusReport().getClassTag ();
       while (in.nextToken (restag))  {
             addItem (new TRStatusReport (in));
       }
       endLoad ();
       in.end (getClassTag ());
   }

只需指定适当的比较器,即可使用Java内置的排序算法。类似以下内容:

public void  doImport(TRDataReader in) throws IOException, TRException {
    in.start(getClassTag()); // get the class tag
    importFlags(in); // import the set's flags from a datareader

    // Add the reports to a temporary list first.
    final String restag = new TRStatusReport().getClassTag();
    List<TRStatusReport> list = new ArrayList<TRStatusReport>();
    while (in.nextToken(restag)) {
        list.add(new TRStatusReport(in));
    }         

    // Now sort them.
    TRStatusReport[] array = list.toArray(new TRStatusReport[]{});
    Collections.sort(array, new Comparator<TRStatusReport>() {
        @Override
        public int compare(TRStatusReport o1, TRStatusReport o2) {
            return o1.getReportDate().compareTo(o2.getReportDate());
        }
    });

    // Add it to the internal list.
    beginLoad();
    for (int i = 0; i < array.length; i++) {
        addItem(array[i]);
    }
    endLoad();
    in.end( getClassTag() );
}
public void doImport(TRDataReader in)抛出IOException、treexception{
in.start(getClassTag());//获取类标记
importFlags(in);//从数据读取器导入集合的标志
//首先将报告添加到临时列表中。
最终字符串restag=new TRStatusReport().getClassTag();
列表=新的ArrayList();
而(在nextToken(restag)){
列表。添加(新TRStatusReport(in));
}         
//现在把它们分类。
TRStatusReport[]数组=list.toArray(新TRStatusReport[]{});
排序(数组,新的比较器(){
@凌驾
公共整数比较(TRStatusReport o1、TRStatusReport o2){
返回o1.getReportDate().compareTo(o2.getReportDate());
}
});
//将其添加到内部列表中。
beginLoad();
for(int i=0;i

如果日期不是Java日期对象,则必须找到一种比较日期的方法。我盲目地编写了这段代码(我不知道对象是什么),并进行了一些假设。例如,beginLoad()和endLoad()方法。。。它们是用于列表还是用于阅读。。。如果是这样,它们可能需要放在while子句周围,在while子句中加载对象并添加到临时列表中。

什么是
JVDate
?它是否实现了可比较的
?您在排序什么?阵列?
列表
?声明在哪里?你能更具体一点吗。。。如果是比较的话,我已经修正了。以上内容不应是复制粘贴。。。可能需要进行一些修补。:)@jaco你能告诉我应该在哪里使用代码部分吗?我应该删除addItem方法吗?它还表明reportList可以解析为一个变量。同时显示JVDate类型的方法compareTo(JVDate)未定义。@jack toArray、sort和compareTo方法不起作用。错误如下:1.类型列表中的方法toArray(T[])不适用于参数(TRStatusReport)2.方法compareTo(JVDate)未定义为类型JVDate 3.方法sort(List,ComparatorI)修复了toArray-是的愚蠢错误。我不知道如何比较JVDate(它不是标准Java类)。假设它是某种类型的包装器,类似o1.getDate().compareTo(o2.getDate())的东西可能会起作用。其他人通过在排序调用中用列表替换数组(我以前已修复过)来编辑并破坏我的代码。请确保它显示的是“数组”,而不是“reportList”或“list”.sort和comapareTo方法仍不起作用:JVDate对象可以像这样声明:JVDate latest=TR_DATE\u NULL;