JAVA ArrayList利用Comparator实现自定义排序
? ? ? ? ? 先說遇到的問題吧,,,ArrayList<String> ?里面存放的本地文件路徑,然后通過這個路徑找到文件,按照文件的最后修改時間排序,,,,提起來沒啥問題的,。,,當(dāng)時寫的代碼這樣的:?
? ? ? ? ?//根據(jù)路徑對應(yīng)的文件最后修改時間排序
private class SortByLastModifyTime implements Comparator {
@Override
public int compare(Object o1, Object o2) {
?try {
File file1 = new File((String)o1);
?File file2 = new File((String)o2);
?if (file1.lastModified() < file2.lastModified()){
?return 1;
?}else{
?return 0;
?}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return 0;
}
}
}
? ?//最后發(fā)現(xiàn),怎么都不能實現(xiàn)排序,,,搞得人郁悶啊。,。,,奇怪怎么回事呢》?
? ? 檢查代碼都沒問題吧,,,但是我還是相信,肯定是我的原因, 沒辦法,找吧。。。。
? ?最后查看文檔,發(fā)現(xiàn)返回值有正數(shù),0,有負數(shù)。。。。那我上面為啥只寫正數(shù)1,0呢》? 為啥沒負數(shù)呢?
? 原因找到了:
? ? ??int compare(Object o1, Object o2) 返回一個基本類型的整型
? ?如果要按照升序排序,
? ? ?則o1 小于o2,返回-1(負數(shù)),相等返回0,01大于02返回1(正數(shù))
? ? 如果要按照降序排序
? ? ?則o1 小于o2,返回1(正數(shù)),相等返回0,01大于02返回-1(負數(shù))
? ?
? ?所以: 上面的問題就很明顯了,
//根據(jù)路徑對應(yīng)的文件最后修改時間排序
private class SortByLastModifyTime implements Comparator {
@Override
public int compare(Object o1, Object o2) {
?try {
File file1 = new File((String)o1);
?File file2 = new File((String)o2);
?if (file1.lastModified() < file2.lastModified()){
?return 1;
?}else{
?return -1;
?}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return -1;
}
}
}
總結(jié): 其實寫代碼遇到問題很正常的,保持一個平和的心態(tài)去解決,一切都可以搞定的
總結(jié)
以上是生活随笔為你收集整理的JAVA ArrayList利用Comparator实现自定义排序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [网鼎杯 2020 朱雀组]phpweb
- 下一篇: 零基础想考HCIP(华为认证网络工程师)