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 中,我需要按窗口排序的顺序显示文件。具有上述名称的文件夹按默认排序机制排序。只有文件是无序的。所以我正在寻找一种在 Windows 中用于 java 和 python 的比较方法。谁能帮我用比较器来解决这个问题

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 回答