首页 新闻 赞助 找找看

java Collections工具类排序结果异常问题(排列项为数字类型)

0
悬赏园豆:10 [已关闭问题] 关闭于 2019-12-10 14:38

在使用java的Collections.sort工具类对文件进行排序时,大数据量时出现部分数据排序结果异常,原因不明,环境linux ,jdk8(底层使用timSort排序算法),

1.一开始怀疑是此内部类线程安全问题,但对于字符串类型排序结果是正常的,此项似乎被排除

2.怀疑java的数据类型,超出Long数字保存大小,但是对于时间类型,此容器远远足够,可能性不大

3.当数据量较小时,数据的排序结果是正常的(疑问点),似乎跟排序的数据量结果有关系

详细代码如下:

复制代码
 1     // 文件列表排序
 2  public static List<File> fileListSort(File[] fileArray, String orderBy) throws Exception {
 3         List<File> filelist = Arrays.asList(fileArray);
 4         Collections.sort(filelist, new Comparator<File>() {
 5             @Override
 6             public int compare(File f1, File f2) {
 7                 int order = 0;
 8                 switch (orderBy) {
 9                 case "name":
10                     order = f1.getName().toLowerCase().compareTo(f2.getName().toLowerCase());
11                     break;
12                 case "size":
13                     //order = ((Long)f1.length()).compareTo(f2.length());
14                     order =(f1.length()< f2.length()) ? -1 : ((f1.length()==f2.length()) ? 0 : 1);
15                     break;
16                 case "lastModifiedTime":
17                     //order = ((Long)f1.lastModified()).compareTo(f2.lastModified());
18                     order =(f1.lastModified()<f2.lastModified()) ? -1 : ((f1.lastModified()==f2.lastModified()) ? 0 : 1);
19                     break;
20                 default:
21                     break;
22                 }
23                 return order;
24             }
25         });
26         return new ArrayList<>(filelist);
27     }
复制代码
问题补充:

显示截图:

夜半风起的主页 夜半风起 | 菜鸟二级 | 园豆:224
提问于:2019-12-09 15:14
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册