0

我做了一个简单的测试

我在目录 A 中有一些文件,我多次调用 file.list(),然后打印结果

我发现结果总是有相同的序列

我想知道是什么决定了 file.list() 的顺序?

我不想对结果进行排序,所以不要告诉我使用 Comparator。

我只想知道是什么决定了 file.list() 的顺序?

我注意到 javadoc 告诉我们:

无法保证结果数组中的名称字符串会以任何特定顺序出现;特别是,它们不能保证按字母顺序出现。

那么为什么我每次都得到相同的有序结果呢?

有没有伊达?

谢谢

ps
操作系统:Ubuntu 10.04
android4.03

让我们更容易
选择一个操作系统:Ubuntu 10.04
并选择 java 1.6
我们只考虑一种情况,现在,为什么我每次都得到相同的结果?

谢谢大家!

4

3 回答 3

3

那么为什么我每次都得到相同的有序结果呢?

因为“不保证做X”不等于“保证不做X”。碰巧的是,在您的系统上,实现可能总是按字母顺序返回结果。它可能取决于正在使用的文件系统。它几乎可以肯定取决于操作系统。这可能取决于您使用的 Java 版本。

重要的是它不能保证,所以你不应该依赖它。

于 2012-12-07T10:27:07.443 回答
0

它至少取决于执行它的操作系统。我自己之前观察到,在 Windows 上它按字母顺序返回,而在 Linux 上它是相反的顺序。永远不要像文档中提到的那样依赖它。

于 2012-12-07T10:51:19.407 回答
0

我认为它依赖于操作系统或文件系统。Java 查询文件系统以获取文件列表。因此结果对于 JAVA 是未知的。

因此,要确保列表按所需顺序排列,您应该对其进行排序。但是,如果您使用快速排序,那么无论如何它应该很快。通常列表已经按操作系统排序。

于 2012-12-07T10:30:31.383 回答