一個字符串數組考慮下面的字符串數組,這是文件名使用相對路徑列表:排序包含相對文件名
String[] myArray = { "src\\kop\\cKOP_C.o"
, "src\\io\\cIO_S.o"
, "src\\io\\com\\cGA_M.o"
, "src\\io\\cADC.o"
, "src\\io\\cIO_H.o"
, "src\\io\\com\\com_m.o"
, "src\\io\\tab_s.o"
, "src\\kop\\cKOP" };
的目錄佈局是:
src\io\cADC.o
src\io\cIO_H.o
src\io\cIO_S.o
src\io\tab_s.o
src\io\com\cGA_M.o
src\io\com\com_m.o
src\kop\cKOP_A.o
src\kop\cKOP_B.o
我想排序這個數組在Java中有這樣的結果:
src\\io\\cADC.o
src\\io\\cIO_H.o
src\\io\\cIO_S.o
src\\io\\tab_s.o
src\\io\\com\\cGA_M.o
src\\io\\com\\com_m.o
src\\kop\\cKOP_A.o
src\\kop\\cKOP_B.o
目前我使用的Array.Sort(myarray的),但日Ë結果是這樣的:
src\\io\\cADC.o
src\\io\\cIO_H.o
src\\io\\cIO_S.o
src\\io\\com\\cGA_M.o
src\\io\\com\\com_m.o
src\\io\\tab_s.o
src\\kop\\cKOP_A.o
src\\kop\\cKOP_B.o
這不是我想要的,因爲我想keep
目錄信息,所以名單目錄中的第一所有文件,如果有一個子目錄中,列出了文件在子目錄之後。
我知道我必須實現一個比較器()的數組進行排序,因爲我想要的,但我無法弄清楚比較的邏輯。
使用['陣列#排序(T [],比較 super T>) '](http://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#sort%28T [],%20java.util.Comparator%29)並提供一個'C omparator'支持你想要/需要的東西。爲了簡化比較,您可以創建一個'File []'數組並使用'Comparator ',注意['File'](http://docs.oracle.com/javase/7/docs/api/java/ io/File.html)類有更多的方法來支持你的排序比較器,比如'isFile'和'isDirectory'。 –
@Ernest:你完全正確的絕對路徑:)。 – user2448122