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