日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JAVA ArrayList利用Comparator实现自定义排序

發布時間:2024/1/1 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JAVA ArrayList利用Comparator实现自定义排序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.



? ? ? ? ? 先說遇到的問題吧,,,ArrayList<String> ?里面存放的本地文件路徑,然后通過這個路徑找到文件,按照文件的最后修改時間排序,,,,提起來沒啥問題的,。,,當時寫的代碼這樣的:?
? ? ? ? ?//根據路徑對應的文件最后修改時間排序
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;
}
}
}
? ?//最后發現,怎么都不能實現排序,,,搞得人郁悶啊。,。,,奇怪怎么回事呢》?
? ? 檢查代碼都沒問題吧,,,但是我還是相信,肯定是我的原因, 沒辦法,找吧。。。。
? ?最后查看文檔,發現返回值有正數,0,有負數。。。。那我上面為啥只寫正數1,0呢》? 為啥沒負數呢?
? 原因找到了:

? ? ??int compare(Object o1, Object o2) 返回一個基本類型的整型
? ?如果要按照升序排序,
? ? ?則o1 小于o2,返回-1(負數),相等返回0,01大于02返回1(正數)
? ? 如果要按照降序排序
? ? ?則o1 小于o2,返回1(正數),相等返回0,01大于02返回-1(負數)

? ?

? ?所以: 上面的問題就很明顯了,

//根據路徑對應的文件最后修改時間排序
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;
}
}


}



總結: 其實寫代碼遇到問題很正常的,保持一個平和的心態去解決,一切都可以搞定的






總結

以上是生活随笔為你收集整理的JAVA ArrayList利用Comparator实现自定义排序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。