Java数组排序日期已修改

Java数组排序日期已修改,java,arrays,sorting,Java,Arrays,Sorting,我有一个包含多个文件的目录。我想按修改日期对文件进行排序 例如 将file1与设定时间进行比较,例如13:59(file1=1分钟差异)、file1与file2(file2=2分钟差异)、file2与file3(file3=1小时20分钟差异)、file3与file4(file4=3分钟差异),file4与file5(文件5=1小时差)。并根据差异列出它们。清单现在应为: file3.csv (created 15:22:55) file5.csv (created 14:28:55) fi

我有一个包含多个文件的目录。我想按修改日期对文件进行排序

例如

file1
与设定时间进行比较,例如13:59(file1=1分钟差异)、
file1
file2
(file2=2分钟差异)、
file2
file3
(file3=1小时20分钟差异)、
file3
file4
(file4=3分钟差异),
file4
file5
(文件5=1小时差)。并根据差异列出它们。清单现在应为:

file3.csv  (created 15:22:55)
file5.csv  (created 14:28:55)
file4.csv  (created 15:25:55)
file1.csv  (created 14:00:55)
file2.csv  (created 15:02:55)

实现这一点的诀窍是将文件(名称和实际修改时间)封装在对象中,以及用于对列表进行排序的值。也就是说,你这样做:

  • 按照要计算差异的顺序(文件名或修改时间)读取文件条目
  • 将它们加载到集合中的对象中,并计算要按其排序的值;将排序值设置到对象中
  • 根据计算值对集合进行排序
  • 对于您的数据,假设原始顺序是按文件名,开始时间是13:59:00

    Original                        Calculated
    Data                            Sort Key
    -----------------------------   ----------
    file1.csv  (created 14:00:55)      1:55
    file2.csv  (created 14:02:55)      1:00
    file3.csv  (created 15:22:55)     20:00
    file4.csv  (created 15:25:55)      5:00
    file5.csv  (created 16:28:55)      3:00
    
    按“计算的排序键”列(降序)排序可以得到所需的内容

    下面是一个Java示例(未经测试):

    class FileWithTimeOffset实现可比较
    {
    字符串文件名;
    枣仁;
    整数时间偏移;
    public int compareTo(文件带时间偏移量其他)
    {
    //返回比较的负数以实现降序排序
    return-Integer.compare(this.timeOffset,other.timeOffset);
    }
    }
    
    这是java还是javascript?它们是两种完全不同的语言。什么决定了建立差异的最初顺序?是文件名吗?
    Original                        Calculated
    Data                            Sort Key
    -----------------------------   ----------
    file1.csv  (created 14:00:55)      1:55
    file2.csv  (created 14:02:55)      1:00
    file3.csv  (created 15:22:55)     20:00
    file4.csv  (created 15:25:55)      5:00
    file5.csv  (created 16:28:55)      3:00
    
    class FileWithTimeOffset implements Comparable<FileWithTimeOffset>
    {
        String fileName;
        Date   creationDate;
        int    timeOffset;
        public int compareTo(FileWithTimeOffset other)
        {
            // return negative of comparison to achieve descending sort
            return -Integer.compare(this.timeOffset,other.timeOffset);
        }
    }