0

Windows XP には以下のファイルがあります。以下の方法で名前順に並べ替えた後。

test_1a.play
test_1AA.play
test_1aaa.play
test_1AB.play
test_1AC.play
test-_1AAAA.play

これらのファイルを Java で読み込んで Collections.sort(listofFiles) または python を実行して listofFiles.sort() を実行すると、以下の順序になります

test-_1AAAA.play
test_1AA.play
test_1AB.play
test_1AC.play
test_1a.play
test_1aaa.play

GUI では、ウィンドウが並べ替えられている順序でファイルを表示する必要があります。上記の名前のフォルダーは、既定の並べ替えメカニズムによって並べ替えられます。ファイルのみが乱れています。だから私はJavaとPythonに使用するWindowsで使用される比較メソッドを探しています。これを解決するためのコンパレーターを手伝ってくれる人はいますか

4

1 に答える 1

1

それを試してください:

    Collections.sort(files,new Comparator<File>()
    {
        Collator myCollator = Collator.getInstance();
        @Override
        public int compare(File o1, File o2)
        {
            return myCollator.compare(o1.getName(),o2.getName());
        }
    });

違いは、Windows では大文字と小文字が区別されないためです。Collat​​orのドキュメントを見ると、次のように書かれています。

Collat​​or クラスは、ロケールに依存した文字列比較を実行します。

それを使ってコンパレータを実行するだけです。List がファイルのリストではなく、文字列のリストである場合は、コンパターが既に存在するため、さらに簡単です: http://docs.oracle.com/javase/6/docs/api/java/lang/String.html# CASE_INSENSITIVE_ORDER

于 2012-06-05T04:25:38.970 に答える