次の文字列配列を考えてみましょう。これは、相対パスを持つファイル名のリストです。
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
最初にディレクトリ内のすべてのファイルをリストし、サブディレクトリがある場合は、後でサブディレクトリ内のファイルをリストします。
配列を必要に応じて並べ替えるには Comparator() を実装する必要があることはわかっていますが、比較の背後にあるロジックがわかりません。